我有一個使用這個符號,以確保一個對象初始化一個JavaScript:對象等於自我或空對象
MyObject = MyObject || {};
我明白它做什麼,即檢查羯羊MyObject的是什麼,如果不分配一個空對象MyObject
。我並不完全瞭解JS的所有內部特性,所以我不知道如何在一個任務中使用邏輯比較。
它是如何工作的?有沒有其他語言允許這樣做?
我有一個使用這個符號,以確保一個對象初始化一個JavaScript:對象等於自我或空對象
MyObject = MyObject || {};
我明白它做什麼,即檢查羯羊MyObject的是什麼,如果不分配一個空對象MyObject
。我並不完全瞭解JS的所有內部特性,所以我不知道如何在一個任務中使用邏輯比較。
它是如何工作的?有沒有其他語言允許這樣做?
取決於語言。
例如,在Ruby中,您可以使用此樣式。
但是在PHP中,你不能使用這種風格,因爲在PHP中,邏輯運算符總是返回一個布爾值(true/false)。
結論:
如果邏輯運算符總是返回一個布爾值,那麼你不能使用這種風格。
如果邏輯運算符返回第一個值,當第一個值爲真時,否則返回第二個值,那麼您可以使用這種樣式。
邏輯「或」操作符具有短路語義,這意味着右操作數僅在左手邊操作數評估爲false
時才被評估。因此,如果MyObject
是初始化,則該語句讀取MyObject = MyObject;
(不做任何事),否則它是MyObject = {};
。
+1在我看來最好的答案 – imwill 2012-11-12 15:10:53
此語法的意思是「如果已定義,則自行分配MyObject
;否則,給它一個空對象。」
它的工作原理是,Javascript將未定義的值視爲false,並將其定義爲true。將其與邏輯表達式的懶惰評估相結合,就會得到上述行爲。
我想這是JS解釋未定義值爲false的組合,並且邏輯比較不一定會返回一個bool。感謝你和Peter的澄清。 – jurgemaister 2012-08-03 12:49:26