&安培;&安培; / || JavaScript中的运算符异常

时间:2014-06-23 16:22:53

标签: javascript

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

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

我对此非常困惑,因为我不认为它应该打印出来" ok"。我认为,因为和&&操作员是假的,它不应该运行,但我显然是错的。任何人都可以澄清它为什么起作用吗?

1 个答案:

答案 0 :(得分:3)

在Javascript中,运算符不仅仅是从左到右,某些运算符have more precedence than others进行评估。具有较高优先级的那些(在这种情况下,优先级为13的&&运算符)将在其他(||,优先级14)之前进行评估。


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

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

JSFiddle