[英]javascript: surprising order of operations
我最近編寫的代碼沒有像我期望的那樣工作,它是:
message = 'Thank You';
type = 'success';
message = message || type == 'success' ? 'Success' : 'Error';
對我來說, message
的結尾是“成功” 。
我認為,既然消息的true
價值是true
,那么右邊or
不會評價。
OR右側的括號解決了這個問題,但我仍然不明白為什么右側進行了評估
你的代碼相當於
message = ( message || type == 'success' ) ? 'Success' : 'Error';
這就是為什么。 :)
message
的價值不會以"success"
而是"Success"
。
的?
運算符的優先級低於||
運算符,因此代碼被評估為:
message = (message || type == 'success') ? 'Success' : 'Error';
message || type == 'success'
的結果 message || type == 'success'
將是"Thank You"
,當它被評估為?
的布爾值?
運算符,結果是true
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.