思考:1&&2 返回什么 答案是2
在 JavaScript 中,表达式 1 && 2 其实是在考察逻辑运算符的行为,尤其是 逻辑与 (&&) 运算符的短路求值(short-circuit evaluation)特性。
1. 逻辑与 (&&) 运算符的工作原理
&& 是逻辑与运算符,通常用于判断两个条件是否都为 true,例如:
javascript
if (condition1 && condition2) {
// 当 condition1 和 condition2 都为真时,执行此代码块
}
但是在 JavaScript 中,&& 不仅仅用于布尔逻辑,它也可以操作非布尔值。其具体行为如下:
- 短路求值:如果第一个操作数为
falsey(例如false,0,null,undefined,NaN, 或空字符串""),&&直接返回第一个操作数,且不计算第二个操作数。 - 如果第一个操作数为
truthy(例如非空字符串,非零数字,true,对象等),则会计算并返回第二个操作数。
2. 1 && 2 的含义
在 1 && 2 这个表达式中:
1是一个truthy值(因为所有非零数字在 JavaScript 中都被认为是truthy)。- 根据逻辑与运算符的规则,当第一个操作数为
truthy时,返回第二个操作数。
因此,1 && 2 的结果是 2,因为:
- 第一个操作数
1是truthy,所以它不会短路,会继续评估第二个操作数。 - 第二个操作数
2也被评估,且最终返回。
3. 逻辑与 (&&) 的短路行为示例
以下是一些示例,说明 && 的短路求值特性:
javascript
console.log(0 && 2); // 输出:0,因为 0 是 falsey,直接返回 0,不会计算第二个操作数
console.log(1 && 2); // 输出:2,因为 1 是 truthy,返回第二个操作数 2
console.log(null && 5); // 输出:null,因为 null 是 falsey
console.log('' && 100); // 输出:''(空字符串),因为空字符串是 falsey
console.log('A' && 'B'); // 输出:'B',因为 'A' 是 truthy,返回第二个操作数 'B'
4. 总结考察点
- 逻辑与运算符的短路求值:
&&运算符在遇到第一个falsey值时就会停止计算,并返回该值;如果第一个值是truthy,则返回第二个操作数。 truthy和falsey的概念:JavaScript 中,所有值都可以隐式转换为布尔值。truthy值会被当作true,而falsey值会被当作false。- 非布尔值的返回行为:
&&和||运算符不仅仅返回布尔值,而是返回操作数本身。
因此,1 && 2 这个表达式的考察点主要是 短路求值 和 truthy/falsey 值的理解。