javascript:令人惊讶的操作顺序

时间:2012-07-03 13:42:35

标签: javascript

我最近编写的代码没有像我期望的那样工作,它是:

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

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

有消息告诉我,message的结尾设置为'成功'

我认为,由于邮件的真实价值为true,因此or的右侧会进行评估。

OR右侧的括号解决了这个问题,但我仍然不明白为什么正确评估侧的

2 个答案:

答案 0 :(得分:11)

您的代码等同于

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

这就是原因。 :)

答案 1 :(得分:3)

message的值不会以"success"结尾,而是"Success"

?运算符的优先级低于||运算符,因此代码的计算结果如下:

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

message || type == 'success'的结果为"Thank You",当?运算符计算为布尔值时,结果为true