2012-07-03 50 views
4

我最近寫了沒有工作,我所期望的代碼令人驚訝的秩序,它是:的javascript:操作

message = 'Thank You'; 
type = 'success'; 

message = message || type == 'success' ? 'Success' : 'Error'; 

有人告訴我這個消息,在該message年底被設置爲「成功」

我想,既然這個消息的truthy值true,該or的右側會評估。

周圍或右邊括號解決了這個,但我仍然不明白爲什麼右邊側在所有

回答

11

評估您的代碼就相當於

message = (message || type == 'success') ? 'Success' : 'Error'; 

這就是爲什麼。 :)

+7

是的,'?:'具有最低的優先級... https://developer.mozilla.org/zh/JavaScript/Reference/Operators/Operator_Precedence –

3

message的值不會最終爲"success"而是"Success"

?操作符比||操作者的優先級低,所以代碼被評價爲:

message = (message || type == 'success') ? 'Success' : 'Error'; 

message || type == 'success'結果將是"Thank You",並且當被評估作爲?操作者一個布爾值,結果是true

+0

你是對的,糾正我的問題 – mkoryak