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