簡體   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