2014-10-30 48 views
-1

我在javascript中創建了一個對象的代碼。 但我完全不知道下面的代碼究竟做了什麼。帶流水線的JavaScript變量

var a = a || {}; 

解釋將不勝感激。

+0

http://stackoverflow.com/a/476445/ – chridam 2014-10-30 11:43:55

+0

''||是短路OR。代碼將檢查a是否爲真。如果不是,則a被賦予一個空對象。 – A1rPun 2014-10-30 11:44:11

回答

0

看看雙管如邏輯

var a = a OR { }; 

其中相當多的裝置中,如果a具有一個Javascript truthy值,(重新)分配到aa,否則分配一個新的對象引用。

0

它設置爲的值可變a或者:

  • a的電流值的一個副本,如果a存在且是一個原始類型

  • 到的電流值的參考a如果a存在並且是複雜類型

  • 如果a不存在0新對象

0

如果aundefinedfalse設置a = {}

2

這裏的第一步是要明白,它真的變成這樣:

var a; 
a = a || {}; 

...這var a是一個空操作如果a變量已在之前的當前範圍內聲明。

因此,第一部分(var a)確保a作爲變量存在(如果它尚未存在)。

第二部分然後說:如果a有一個「truthy」值,保留它(不要改變它)。如果它具有「虛假」值,請將{}指定爲a

的 「falsey」 值是0NaNnullundefined"",當然,false。 Truthy值是所有其他值。

這是因爲JavaScript's curiously-powerful || (logical OR) operator,它不像其他一些語言,並不總是導致truefalse;相反,它評估左手操作數,如果這是真的,則將該值作爲結果;否則,它會評估右側的操作數並將其用作結果。

0

它像普通如果條件(似乎三元運算符)檢查布爾值和分配值