-1
A
回答
0
看看雙管如邏輯或。
var a = a OR { };
其中相當多的裝置中,如果a
具有一個Javascript truthy值,(重新)分配到a
a
,否則分配一個新的對象引用。
0
它設置爲的值可變a
或者:
的
a
的電流值的一個副本,如果a
存在且是一個原始類型到的電流值的參考
a
如果a
存在並且是複雜類型如果
a
不存在0新對象
0
如果a
是undefined
或false
設置a = {}
2
這裏的第一步是要明白,它真的變成這樣:
var a;
a = a || {};
...這var a
是一個空操作如果a
變量已在之前的當前範圍內聲明。
因此,第一部分(var a
)確保a
作爲變量存在(如果它尚未存在)。
第二部分然後說:如果a
有一個「truthy」值,保留它(不要改變它)。如果它具有「虛假」值,請將{}
指定爲a
。
的 「falsey」 值是0
,NaN
,null
,undefined
,""
,當然,false
。 Truthy值是所有其他值。
這是因爲JavaScript's curiously-powerful ||
(logical OR) operator,它不像其他一些語言,並不總是導致true
或false
;相反,它評估左手操作數,如果這是真的,則將該值作爲結果;否則,它會評估右側的操作數並將其用作結果。
0
它像普通如果條件(似乎三元運算符)檢查布爾值和分配值
相關問題
- 1. 流水線工作流程和變量
- 2. 帶緩存的Oracle流水線功能
- 3. 流到mysql的流水線
- 4. Redis流水線
- 5. 在流水線
- 6. 與流水線
- 7. 流水線vs
- 8. Bitbucket流水線
- 9. 訪問具有無效變量名稱的流水線變量屬性
- 10. 流水線中的命令行bash變量
- 11. 如何將流水線結果分配給Bash中的變量
- 12. 從Jenkins流水線中的shell步驟中訪問Groovy變量
- 13. 帶有流水線的結構化流式傳輸
- 14. 帶下劃線的變量
- 15. 布爾變量的流水規則
- 16. Jenkins流水線結果度量分析
- 17. MIPS流水線和吞吐量
- 18. 帶變量的JavaScript getElementById
- 19. 程序流水線着色器變量交換
- 20. Jenkins:無法在流水線階段定義變量
- 21. 訪問SCM(GIT)在詹金斯流水線作業變量
- 22. Bash:在流水線中間設置一個shell變量
- 23. Jenkins使用Groovy流水線腳本的多流水線工程
- 24. 裝配流水線
- 25. WebServices流水線(Springboot)
- 26. 是68HC11流水線?
- 27. 流水線功能
- 28. 並行流水線
- 29. Android HTTP流水線
- 30. 流水線架構
http://stackoverflow.com/a/476445/ – chridam 2014-10-30 11:43:55
''||是短路OR。代碼將檢查a是否爲真。如果不是,則a被賦予一個空對象。 – A1rPun 2014-10-30 11:44:11