所以,当我遇到这样的问题时,我正在研究我的一个项目:
var one = 1;
var two = 2;
var three = 7;
if (one === 1 || two === 2 && three === 3) {
console.log("ok"); // prints out ok
}
我对此非常困惑,因为我不认为它应该打印出来" ok"。我认为,因为和&&操作员是假的,它不应该运行,但我显然是错的。任何人都可以澄清它为什么起作用吗?
答案 0 :(得分:3)
在Javascript中,运算符不仅仅是从左到右,某些运算符have more precedence than others进行评估。具有较高优先级的那些(在这种情况下,优先级为13的&&
运算符)将在其他(||
,优先级14)之前进行评估。
对于您的特定情况,您需要对条件进行分组以实现所需的功能:
if ((one === 1 || two === 2) && three === 3) {
console.log("ok"); // prints out ok
}