2012-03-10 35 views

回答

4

表達_a || []將返回_a如果是「truthy」,否則[](它被短路,所以只判斷直到有的操作數是'真'的,或者他們都被評估過)。

這實質上是檢查null。如果_a爲空或未定義(或者爲false,但在此方案中不可能),那麼它將被初始化爲一個空數組。

+0

重要的是要注意,下面的結果是錯誤的'truthy'檢查(或者,我可以說'falsy'值):false,null,undefined,空字符串, 0','parseInt({})'(導致'NaN'是虛假的)。 – Marshall 2012-03-10 00:20:04

+0

@馬歇爾:謝謝。我不是一位JS專家,在業餘時間只是忙於此(我是系統人員)。我特意使用了'truthy',因爲我認爲我可能會錯過一個或多個案例。再次感謝。 – 2012-03-10 00:25:36

+0

對於系統人員來說,這是一個堅實的答案。很多使用JavaScript的人甚至不理解真值;) – Marshall 2012-03-10 00:33:03

0

如果_a已經定義,然後使用它的值,否則初始化空數組

1

這使默認狀態\值。如果當前範圍中沒有_a,或者它不是任何類型的真或值,則它將被創建爲空數組。如果存在,它會被重新分配給自己,這不是一個很好的做法。它2例是有用的:

  1. 的方法(功能)的內部 - 的另一功能可能會返回一個陣列或空(例如)。如果你需要隱含數組的方法,你保證_a是一個數組:

    var _a = _a || [];

  2. 傳遞爲參數 - 如果你需要傳遞數組作爲參數。如果參數爲null並且在方法內部隱式需要一個數組(這是分配一個默認參數),但它不應該覆蓋參數。它必須被分配到一個新的變量(我認爲這是因爲下劃線的情況下):

 
function doSomething (a, b, c) 
{ 
    ... 
    var _a = a || []; 
    ... 
}