我正在this page上阅读运算符优先级。它显示“===”的优先级高于“||”运营商。如果是,那么“a === doesThisHappen()”将首先运行。但是为什么我没有得到console.log('这发生了!')?
var a;
a = 1;
function doesThisHappen() {
console.log('This happens!');
return 0;
}
if (a || a === doesThisHappen()) {
console.log('Something is there.');
}
答案 0 :(得分:3)
评估顺序和运算符优先级是正交概念。在a || b
中,无论右侧a
包含什么,左侧b
都会被评估。更重要的是,如果左侧评估为真,则不评估右侧。