JavaScript中数字使用逻辑运算符为何得到如下结果?
嘿,这问题问得太关键了!其实核心是JavaScript里的**短路求值(Short-circuit Evaluation)**机制,咱们一步步拆解你遇到的几个例子:
1. 先搞懂
||(逻辑或)的短路规则 对于表达式a || b,JS会按顺序做两件事:
- 先判断
a是不是真值(truthy value)(简单说就是除了false、0、''、null、undefined、NaN之外的值,比如1、非空字符串、对象都是真值) - 如果
a是真值,直接返回a,根本不会再去计算b——这就是“短路”的意思;只有当a是假值时,才会计算并返回b
对应你第一个例子:console.log(1||2)
1是典型的真值,所以直接返回1,控制台就输出1。
2. 再看
&&(逻辑与)的短路规则 和||正好反过来,表达式a && b的逻辑是:
- 先判断
a是不是真值 - 如果
a是假值,直接返回a,短路不计算b;只有当a是真值时,才会继续计算并返回b
对应你第二个例子:console.log(1&&2)
1是真值,所以JS会继续计算右边的2,返回2,控制台输出2。
3. 最后看组合例子
console.log(1||2,1&&2) 这里其实是两个独立的表达式作为console.log的参数,JS会分别对1||2和1&&2求值,得到1和2之后,把这两个结果一起输出,所以控制台会打印1 2。
简单总结一下:
||是“找第一个真值”,找到就停&&是“找第一个假值”,找不到就返回最后一个真值
内容的提问来源于stack exchange,提问作者vibhor1997a
相关产品推荐
相关产品推荐

