JavaScript:令人惊讶的操作顺序
javascript: surprising order of operations
我最近编写的代码没有像我预期的那样工作,它是:
message = 'Thank You';
type = 'success';
message = message || type == 'success' ? 'Success' : 'Error';
对我来说,这是新闻,在那message
结束时被设置为"成功"。
我认为,由于消息的真实值是true
,or
的右侧不会评估。
OR右侧周围的括号解决了这个问题,但我仍然不明白为什么要评估右侧
你的代码等效于
message = ( message || type == 'success' ) ? 'Success' : 'Error';
这就是原因,:)
message
的值最终不是"success"
而是"Success"
。
?
运算符的优先级低于||
运算符,因此代码的计算公式为:
message = (message || type == 'success') ? 'Success' : 'Error';
message || type == 'success'
的结果将被"Thank You"
,当它被计算为?
运算符的布尔值时,结果是true
。
相关文章:
- 从表单中获取用户输入执行计算(操作顺序)并输出回该表单
- WebSQL和Javascript操作顺序
- JavaScript:令人惊讶的操作顺序
- 链接或分组多个 JavaScript 函数调用,其中操作顺序有时至关重要
- 硒,摩卡,mysql.Mysql 操作顺序
- 通用分析中用于设置自定义维度的操作顺序
- 单击链接时的 Javascript 操作顺序 - 链接启动或附加到 id 的侦听器触发
- Javascript中操作的执行顺序是否保证始终相同
- Javascript 操作顺序问题
- 数组表示法操作顺序
- Angular控制器中的操作顺序没有以正确的方式工作
- Dynamics CRM功能区操作顺序
- JavaScript的操作顺序
- THREE.js:你能强制THREE.js的操作顺序不同吗?
- Node.JS MongoDB操作顺序用例
- Ajax延迟打乱了操作顺序
- 理解使用ES6 Promises时的操作顺序
- 如何在javascript中编写操作顺序
- 了解节点流操作顺序
- JavaScript操作顺序