JavaScript中1&&5返回5而非1,逻辑与&&运算符规则是怎样的?
JavaScript 逻辑与(&&)的返回值规则
你对逻辑与的返回规则记忆存在偏差,JavaScript 中的逻辑运算符采用短路求值逻辑,且不会强制返回布尔类型,而是直接返回参与运算的原始操作数:
&&逻辑与求值逻辑:从左到右依次校验每个操作数的布尔值,遇到第一个假值就直接返回该值,终止后续运算;如果所有操作数都是真值,则返回最后一个真值||逻辑或的求值逻辑刚好相反:从左到右遇到第一个真值就直接返回该值,所有操作数都是假值时才返回最后一个假值
回到你的示例代码:
const one = 1; const two = 5; console.log(one && two);
运行时首先判断one的布尔值为true,满足逻辑与继续运算的条件,因此会继续校验下一个操作数two,由于已经是最后一个真值,所以最终返回5。
常见误区提示:很多初学者会误以为逻辑运算符只能返回
true/false布尔值,实际上只有当你将运算结果放入布尔判断上下文(比如if条件)、或者用Boolean()显式转换时,才会得到布尔值,运算符本身返回的是原始操作数的值。
你可以通过下面的示例快速巩固规则:
// 存在假值的场景 console.log(0 && 100); // 返回 0,第一个假值直接返回 console.log('' && 'hello'); // 返回空字符串 // 全为真值的场景 console.log(2 && 3 && 'test'); // 返回最后一个真值 'test' // 对比逻辑或的返回结果 console.log(0 || 1 || 5); // 返回 1,第一个真值直接返回
内容的提问来源于stack exchange,提问作者Joey
相关产品推荐
相关产品推荐

