繁体   English   中英

用&&​​ ||进行单线短路评估 在JavaScript中

[英]One-line short-circuit evaluation with && || in JavaScript

  var prefix = options && options.prefix || '';

就我而言,在JavaScipt中。 有人可以解释这是什么样的陈述或条件吗? 还是最后前缀变量的值是多少?

我知道(三元运算符):

condition ? expr1 : expr2

但这是不同的。

这种单线相当于说:

var prefix;
if(options && options.prefix){
  prefix = options.prefix;
} else{
  prefix = '';
}

该语句将变量“ prefix”设置为“ options.prefix”的值或空字符串,这样的方式是,如果“ options”不存在,则不会引发错误。

这样做的原因是在Javascript中,逻辑运算符会求值最后一个操作数的值。

因此,如果存在options对象,则表达式的&&部分将被评估为options.prefix。

如果未设置,||的左侧 expression将为false,并且右侧部分=字符串-将返回。

其类似于以下内容:

var prefix;
if(options){     // or for better understanding, its if(options != undefined)
    prefix = options.prefix;
}
else
    prefix = '';

尝试使用以下提琴以更好地理解: http://jsfiddle.net/n41tfnh4/1/ : http://jsfiddle.net/n41tfnh4/1/

翻译成人类语言

如果变量options定义有一些非假值

并且它还有一个属性options.prefix其值也为非false

然后使用此options.prefix值设置变量prefix

否则 ,我们的prefix默认设置为空字符串。


PS。 通过Google“ javascript falsy values ”快速检查JavaScript中的false值的完整列表


更快的解释

这是options.prefix的快速值检查(和获取),默认情况下为空字符串。

(未定义options时不会引发异常)

这意味着, options是一个对象,请使用options.prefix 如果options.prefix undefined或者为null或其他虚假值,则返回空字符串。

options ? options.prefix : ''含义几乎相同options ? options.prefix : '' options ? options.prefix : ''

如果options上有prefix ,请将其设置为var prefix 否则,将其设置为空字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM