使用 && || 的单线短路评估在 JavaScript
One-line short-circuit evaluation with && || in JavaScript
var prefix = options && options.prefix || '';
我的例子是 JavaScipt。有人可以解释一下这是什么陈述或条件吗?或者最后 prefix 变量的值是多少?
我知道(三元运算符):
condition ? expr1 : expr2
但这次不同。
这一行相当于说:
var prefix;
if(options && options.prefix){
prefix = options.prefix;
} else{
prefix = '';
}
该语句将变量 "prefix" 设置为 "options.prefix" 的值或空字符串,如果 "options" 不存在,则它不存在抛出错误。
表示options
是一个对象,使用options.prefix
。如果 options.prefix
是 undefined
或 null
或其他虚假值,return 空字符串。
接近 options ? options.prefix : ''
.
的意思
这样做的原因是 Javascript 逻辑运算符计算最后一个操作数的值。
如果选项对象存在,表达式的 && 部分将被计算为 options.prefix。
如果没有设置,||的左边部分expression 将为 false,右侧部分 = '' string - 将被返回。
类似于以下内容:
var prefix;
if(options){ // or for better understanding, its if(options != undefined)
prefix = options.prefix;
}
else
prefix = '';
尝试以下 fiddle 以获得更好的理解:
http://jsfiddle.net/n41tfnh4/1/
翻译成人类语言
如果变量 options
定义了一些非假值
并且它还有一个属性 options.prefix
其值也是非假的
然后用这个 options.prefix
值设置变量 prefix
。
否则,我们的prefix
默认设置为空字符串
PS. 快速查看 JavaScript 中 错误值 的完整列表 google "javascript 虚假值"
更快的解释
这是 options.prefix
的快速值检查(和获取),默认为空字符串。
(当 options
未定义时不抛出异常)
如果 prefix
在 options
可用,请将其设置为 var prefix
。否则,将其设置为空字符串。
var prefix = options && options.prefix || '';
我的例子是 JavaScipt。有人可以解释一下这是什么陈述或条件吗?或者最后 prefix 变量的值是多少?
我知道(三元运算符):
condition ? expr1 : expr2
但这次不同。
这一行相当于说:
var prefix;
if(options && options.prefix){
prefix = options.prefix;
} else{
prefix = '';
}
该语句将变量 "prefix" 设置为 "options.prefix" 的值或空字符串,如果 "options" 不存在,则它不存在抛出错误。
表示options
是一个对象,使用options.prefix
。如果 options.prefix
是 undefined
或 null
或其他虚假值,return 空字符串。
接近 options ? options.prefix : ''
.
这样做的原因是 Javascript 逻辑运算符计算最后一个操作数的值。
如果选项对象存在,表达式的 && 部分将被计算为 options.prefix。
如果没有设置,||的左边部分expression 将为 false,右侧部分 = '' string - 将被返回。
类似于以下内容:
var prefix;
if(options){ // or for better understanding, its if(options != undefined)
prefix = options.prefix;
}
else
prefix = '';
尝试以下 fiddle 以获得更好的理解:
http://jsfiddle.net/n41tfnh4/1/
翻译成人类语言
如果变量 options
定义了一些非假值
并且它还有一个属性 options.prefix
其值也是非假的
然后用这个 options.prefix
值设置变量 prefix
。
否则,我们的prefix
默认设置为空字符串
PS. 快速查看 JavaScript 中 错误值 的完整列表 google "javascript 虚假值"
更快的解释
这是 options.prefix
的快速值检查(和获取),默认为空字符串。
(当 options
未定义时不抛出异常)
如果 prefix
在 options
可用,请将其设置为 var prefix
。否则,将其设置为空字符串。