以下代码显示3.为什么?你能解释为什么吗?
alert( null || 2 && 3 || 4 );
&&的优先级是否高于||?操作员?为什么它不显示2?
答案 0 :(得分:1)
评估顺序为
null || (2 && 3) || 4
null || 3 || 4
3 || 4
3
logical AND &&
的operator precedence比logical OR ||
高。
console.log(null || 2 && 3 || 4); // 3
答案 1 :(得分:1)
&&的优先级是否高于||?运算符?
是的。这称为operator precedence。您可以在MDN上找到table for JS operators。
您的表情被评估为
alert((null || (2 && 3)) || 4);
要获得从左到右的评估,您需要编写
alert((null || 2) && 3 || 4 );
答案 2 :(得分:0)
如果||
运算符返回 fassy 值,则会运行下一个操作数。
如果&&
运算符返回 truthy 值,则会运行下一个操作数。
否则,请停止进一步操作。
所以
- null || // false, go further
- 2 && // true, go further
- 3 || // true, stop
因此,最终返回3。
编辑:
如果您谈论运算符的优先级,则可以查看operator precedence。您可以在其中看到&&
运算符的优先级值为6,而||
运算符的优先级值为5。因此,&&
运算符的顺序更高。
答案 3 :(得分:0)
&&
运算符优先级高于||
。因此,null || 2 && 3 || 4
表达式实际上与null || (2 && 3) || 4
相同。
让我们逐步评估整个表达式:
null
是一个伪造的值,因此请检查下一个操作数(2 && 3)
得出3,这是一个真实值,它在此处停止并返回3