JavaScript:令人惊讶的操作顺序

javascript: surprising order of operations

本文关键字:操作 顺序 JavaScript      更新时间:2023-09-26

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

message = 'Thank You';
type = 'success';
message = message || type == 'success' ? 'Success' : 'Error';
对我来说,这是

新闻,在那message结束时被设置为"成功"。

我认为,由于消息的真实值是trueor的右侧不会评估。

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

你的代码等效于

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

这就是原因,:)

message 的值最终不是"success"而是"Success"

?运算符的优先级低于||运算符,因此代码的计算公式为:

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

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