2
A
回答
3
是的,它將分配給a
。這種事情可能甚至不會在編譯語言中進行優化。
然而,它不會浪費時間評估b
但是因爲它已經知道結果。這樣的事情發生在a = a || b
運行:
if a
a = a
else
a = b
編輯:
跟進什麼icktoofay說:「它不會顯著影響性能。」,它只是設置(布爾)變量,是可能發生的最簡單的操作之一。即使分配給像函數或數組這樣更重要的東西,它也沒什麼區別,因爲它將分配給項目的引用,而不是再次創建它。
這是一個無所作爲與自我分配(jsPerf link)的性能比較,感謝@bfavaretto的設置。
0
a
將在a
或b
爲真時爲true。所以是的,除非在可能影響a
值的行之間插入更多代碼,否則較低的語句將始終將a
設置爲true。
+0
這是不正確的。如果'b'爲'true',但'a'爲例如'10',則'a'將被重新分配給'10',而不是'true'。 – 2014-04-12 11:55:36
0
是的 - 它不會被優化,因爲JavaScript不會優化。雖然底層的解析器實現可以想象得到優化,但我非常懷疑它會在這種情況下,而且它對平臺實現非常具體。
相關問題
- 1. Javascript操作符!==
- 2. JavaScript操作HTML字符串
- 3. JavaScript的字符串操作
- 4. 的JavaScript字符串操作
- 5. JavaScript字符串操作
- 6. javascript字符串操作
- 7. javascript字符串操作
- 8. Python的符號或操作 「**」
- 9. Javascript字符串賦值操作符
- 10. Javascript使用按位或等於操作符| =爲polyfill創建?
- 11. Javascript,字符串操作,正則表達式或其他東西
- 12. 這位或者操作符在JavaScript中做了些什麼?
- 13. Haskell的Javascript中綴操作符
- 14. javascript中的字符串操作
- 15. Javascript代碼中的字符串操作
- 16. Javascript字符串操作和innerHtml
- 17. Javascript日期/字符串操作
- 18. 刪除不支持Javascript的操作符
- 19. 互動字符串操作通過JavaScript
- 20. Javascript字符串操作 - 網址
- 21. 貓鼬:$或操作符的錯誤?
- 22. 兩個字符的異或操作
- 23. 重載操作符或使函數(C++)
- 24. tsql子串或字符串操作
- 25. 有關使用操作符「或」
- 26. C++ biwise操作符或兩個變量
- 27. 的JavaScript + =操作
- 28. 字符串操作
- 29. 字符串操作
- 30. >>操作符/操作數/修飾符是做什麼的?
這將是'else'而不是'else if'對嗎?如果'a'和'b'爲'false',則會導致a仍然被分配給'b'。 – 2013-03-16 04:00:27
是的,我主要試圖說明,如果a已被評估,它會跳過b。 – 2013-03-16 04:01:40
我明白你的觀點。我會在幾分鐘內接受您的答案,但我很想看到有關此主題的其他信息。 – 2013-03-16 04:03:37