簡體   English   中英

javascript:令人驚訝的操作順序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM