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