2017-04-04 137 views
0

現在大約9個月前,我開始在一家新公司工作,並繼續在JS中接受這個問題。它的工作原理和我一直在使用它來保持以前開發人員編寫代碼的方式,但我不完全知道它的作用。我嘗試過使用Google搜索,但不確定要搜索的內容。Javascript - 有人可以向我解釋這到底是什麼嗎?

!options && (options = {})

對我來說,那感覺就像是一種三元條件的,但我也不太清楚。

這方面的一個較好的例子是:

function init(options) { 
    !options && (options = {}); 
} 

init(); 
+0

如果'options'是truthy(存在)沒有任何反應。如果它是假的(不存在),'options'被創建爲一個空對象。 – Li357

+0

它只是創建選項對象,如果它不存在並分配它。 –

+3

這相當於'options = options || {};' – gurvinder372

回答

4

代碼等同於:

if(!options) 
    options = {}; 

這是操作者短路的一個示例:第二個表達式(options = {})僅將如果第一個表達式(!options)爲真,則評估是否爲真,因爲如果第一個表達式爲假,則整個&&-表述將自動爲假。

當使用「和」(&&)和「或」(||)運算符時,會發生這種情況。

MDN有this page更詳細地描述了這一點。

+1

這真棒,非常感謝回答這個傢伙!我認爲這是一個簡單的條件聲明,但'&&'投擲我完全離開:-) – ChronixPsyc

3

這是一種初始化options{}如果沒有給定值的方法。

第一個檢查!options表示「選項是falsy」。

所以,如果optionsnullundefined,等等,都將繼續通過&&聲明並設置options = {},初始化它。

它可以寫成這樣,這是更清晰:

if (!options) { 
    options = {}; 
} 
相關問題