javascript:令人惊讶的操作顺序

mko*_*yak 4 javascript

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

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

message = message || type == 'success' ? 'Success' : 'Error';
Run Code Online (Sandbox Code Playgroud)

对我而言,最新消息message"成功".

我认为,既然消息的真实价值在于true,那么权利的右边or不会评估.

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

fre*_*ish 11

你的代码相当于

message = ( message || type == 'success' ) ? 'Success' : 'Error';
Run Code Online (Sandbox Code Playgroud)

这就是为什么.:)

  • 是的,`?:`具有最低优先级... https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedence (7认同)