[英]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.