使用&&运算符时,为何我的条件判断返回'false'?
问题解答
核心原因
&& 是JavaScript中的逻辑与运算符,它的规则是:只有当左右两侧的表达式同时为true时,整个条件表达式的结果才为true。而一个变量在同一时刻只能持有一个值,不可能同时等于0和1,所以i == 0 && i == 1这个条件永远无法成立,必然返回false,最终执行else分支输出'false'。
关于var i = 01的情况
在JavaScript非严格模式下,以0开头的数字字面量会被解析为八进制数,八进制的01对应的十进制值就是1,所以这个变量本质上和i=1是同一个值,i==0依然是false,条件自然还是不成立。
补充:逻辑与的短路特性
当&&左侧的表达式i==0已经是false时,JavaScript会直接判定整个条件为false,不会再去计算右侧的i==1,这也是为什么这个条件永远走不到true分支的原因之一。
如果你的需求是判断i等于0或者等于1,应该使用逻辑或运算符||,示例代码:
let i = 1; if (i == 0 || i == 1) { console.log('true'); } else { console.log('false'); }
此时只要i的值是0或1,就会输出'true'。
内容的提问来源于stack exchange,提问作者Adam Durrant
相关产品推荐
相关产品推荐

