为什么1 && 2返回2?

3
为什么表达式1 && 2的值是2?

console.log("1 && 2 = " + (1 && 2));


1
这被称为布尔快捷方式。你可以用 || 做类似的事情。例如,0 || 1 || 2 将返回 1,而 0 && 1 && 2 将返回 0。这是因为在第一个示例中,当 || 遇到 1 时,OR 条件满足,它不需要继续执行并短路其余部分。而对于 AND &&,第一个条件使得 AND 不可能,因此短路了 1 和 2。 - Keith
4个回答

3

1
根据MDNexpr1 && expr2会返回expr1如果能被转换为false;否则,返回expr2。因此,当与布尔值一起使用时,&&会在两个操作数都为真时返回true;否则返回false。由于1可以被评估为true,所以1 && 2返回2

0

因为是and,所有的值只需要评估到第一个0,返回最后一次评估的值,就是最后一个。

虽然这里与直接相关,但请注意按位逻辑运算符之间存在差异。前者测试相同的位并仅返回它们,后者缩减为只有true(!= 0)或false(= 0),因此与直觉相反,按位ANDAND不可互换,除非值恰好为01


0
根据此页面: 为什么 1 && 2 == 2 AND 运算符返回第一个假值或者最后一个值(如果没有假值)。 OR 运算符返回第一个真值。
对于同一语句中的多个运算符:
AND && 运算符的优先级高于 OR ||,因此它会在 OR 之前执行。 alert(5 || 1 && 0); // 5

已解释并给出了另一个链接。请确认。 - coder87

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接