回答
表達_a || []
將返回_a
如果是「truthy」,否則[]
(它被短路,所以只判斷直到有的操作數是'真'的,或者他們都被評估過)。
這實質上是檢查null。如果_a
爲空或未定義(或者爲false,但在此方案中不可能),那麼它將被初始化爲一個空數組。
重要的是要注意,下面的結果是錯誤的'truthy'檢查(或者,我可以說'falsy'值):false,null,undefined,空字符串, 0','parseInt({})'(導致'NaN'是虛假的)。 – Marshall 2012-03-10 00:20:04
@馬歇爾:謝謝。我不是一位JS專家,在業餘時間只是忙於此(我是系統人員)。我特意使用了'truthy',因爲我認爲我可能會錯過一個或多個案例。再次感謝。 – 2012-03-10 00:25:36
對於系統人員來說,這是一個堅實的答案。很多使用JavaScript的人甚至不理解真值;) – Marshall 2012-03-10 00:33:03
如果_a
已經定義,然後使用它的值,否則初始化空數組
這使默認狀態\值。如果當前範圍中沒有_a
,或者它不是任何類型的真或值,則它將被創建爲空數組。如果存在,它會被重新分配給自己,這不是一個很好的做法。它2例是有用的:
的方法(功能)的內部 - 的另一功能可能會返回一個陣列或空(例如)。如果你需要隱含數組的方法,你保證
_a
是一個數組:var _a = _a || [];
傳遞爲參數 - 如果你需要傳遞數組作爲參數。如果參數爲null並且在方法內部隱式需要一個數組(這是分配一個默認參數),但它不應該覆蓋參數。它必須被分配到一個新的變量(我認爲這是因爲下劃線的情況下):
function doSomething (a, b, c) { ... var _a = a || []; ... }
- 1. 凌駕邏輯:初學者
- 2. 初學者邏輯開發
- 3. 初學者SQL查詢邏輯
- 4. MultiLanguage - 邏輯錯誤初學者
- 5. 對象代碼圓括號(初學者)
- 6. 初學者JavaScript
- 7. Javascript初學者
- 8. Android初學者:空編輯文本
- 9. SQL Server tsql括號邏輯?
- 10. jQuery初學者 - 解釋這個if語句的邏輯嗎?
- 11. Prolog的有關邏輯和語法初學者
- 12. WPF或Winforms的初學者?
- 13. 初學者的JavaScript問題
- 14. Javascript初學者的作業?
- 15. 閏年布爾邏輯:包括括號?
- 16. 初學者Java布爾邏輯比較輸入值
- 17. 如何解決這個邏輯錯誤(初學者)?
- 18. C++初學者邏輯錯誤 - 返回0
- 19. Java初學者需要邏輯錯誤幫助
- 20. R初學者:參數不是數字或邏輯:返回不適用
- 21. 邏輯運算符或者
- 22. Flask或Django初學者?
- 23. AngularJS或初學者骨幹
- 24. 香草Javascript初學者
- 25. HTML,javascript和jQuery - 初學者
- 26. Stuck with javascript(初學者)
- 27. 爲初學者調試Javascript
- 28. 邏輯學科例程制定者(PHP)
- 29. 初學者的Windows IDE /編輯器
- 30. 正則表達式的邏輯括號...?
看看http://en.wikipedia.org/wiki/Short-circuit_evaluation – dave 2012-03-10 00:13:59