繁体   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