我最近编写的代码没有像我期望的那样工作,它是:
message = 'Thank You';
type = 'success';
message = message || type == 'success' ? 'Success' : 'Error';
有消息告诉我,message
的结尾设置为'成功'。
我认为,由于邮件的真实价值为true
,因此or
的右侧会不进行评估。
OR右侧的括号解决了这个问题,但我仍然不明白为什么正确评估侧的
答案 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
。