请问条件表达式s == 10 || 20与s == 10 || s == 20的区别是什么?
两个if条件的本质区别
先看你给出的代码:
let s = 10; if(s == 10 || s == 20){ console.log(s) } if( s == 10 || 20){ console.log(s) }
第一个条件 s == 10 || s == 20
这是标准的逻辑或判断,两边都是完整的相等比较表达式:
- 只有当
s的值等于10,或者等于20时,整个条件才会返回true,代码块才会执行。 - 如果
s是其他值(比如30、'abc'),这个条件会返回false,不会执行console.log。
第二个条件 s == 10 || 20
这个写法存在逻辑误区,JavaScript会按以下逻辑解析:
- 逻辑或
||的右侧是常量20,在JS的布尔判断里,非零的数字会被视为true。 - 所以这个条件等价于
(s == 10) || true,不管s是什么值,整个条件永远返回true,代码块一定会执行。
为什么测试时输出相同?
因为你测试时s = 10,第一个条件里s ==10为true,第二个条件里s==10也为true,所以两个if都执行了console.log。但如果换个值,比如s=30:
- 第一个条件会返回
false,不会输出; - 第二个条件依然返回
true,会输出30。
内容的提问来源于stack exchange,提问作者Priyansh Kumar
相关产品推荐
相关产品推荐

