4

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

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

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

对我来说这是个新闻,最后message设置为“成功”

我认为,由于 message 的真实值是,true右侧or不会评估。

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

4

2 回答 2

11

您的代码相当于

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

这就是为什么。:)

于 2012-07-03T13:44:02.470 回答
3

的值message不会以"success"but结束"Success"

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

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

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

于 2012-07-03T13:48:47.203 回答