javascript - &&/|| JavaScript 中的运算符奇怪性

标签 javascript

所以,当我遇到这样的问题时,我正在做我的一个项目:

var one = 1;
var two = 2;
var three = 7;
if (one === 1 || two === 2 && three === 3) {
    console.log("ok"); // prints out ok
}

我对此很困惑,因为我认为它不应该打印出“ok”。我认为由于 && 运算符之后的条件为假,它不应该运行,但我显然错了。任何人都可以阐明它为什么起作用吗?

最佳答案

在 Javascript 中,运算符不仅仅是从左到右求值,某些运算符 have more precedence than others .具有更高优先级的那些(在本例中,优先级为 13 的 && 运算符)将在其他优先级(||,优先级为 14)之前进行评估。


对于您的特定情况,您需要对条件进行分组以实现您想要的功能:

if ((one === 1 || two === 2) && three === 3) {
    console.log("ok"); // prints out ok
}

JSFiddle

关于javascript - &&/|| JavaScript 中的运算符奇怪性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24370736/

相关文章:

javascript - 10秒后没有颜色变化

javascript - 调用一个返回 new 函数的函数与正常调用它有什么不同吗?

javascript - 如果需要,删除 CSS 选择器及其相关属性

javascript - 模式内的轮播不起作用

javascript - 异常的转换结束脚本行为

javascript - 在javascript中按名称获取子节点

javascript - 在 span 中对 textchange 调用函数

javascript - 通过 Javascript 使元素可见

javascript - 使用以 '#' 字符开头的键读取 json 对象

javascript - 我查找数组最大元素的算法的缺陷在哪里?