为何JavaScript代码中的条件判断始终为true?
为什么你的条件判断始终为true?
嘿,这是个很常见的新手误区,我来给你拆解清楚问题出在哪!
先看你写的条件:
if (qix === 'a' || 'b' || 'c')
JavaScript里的逻辑或运算符||是依次判断每个操作数的真假性:只要遇到第一个「真值(truthy)」,就会直接返回这个值,整个表达式的结果也就变成true。
这里的核心问题是,你只把qix === 'a'写成了完整的比较条件,而'b'和'c'是单独的非空字符串——在JS里,非空字符串属于真值。不管qix是什么值,当qix === 'a'为false时,||会继续判断下一个操作数'b',因为它是真值,整个条件直接就变成true了,后面的'c'甚至都不会被判断到。
正确的写法应该是这样:
你需要给每个值都写完整的比较逻辑:
if (qix === 'a' || qix === 'b' || qix === 'c') { console.log('condition ok!! now it works') }
或者用更简洁的ES6+写法,借助数组的includes方法:
if (['a', 'b', 'c'].includes(qix)) { console.log('condition ok!! even cleaner') }
这样当qix是'z'的时候,所有比较都会返回false,条件就不会成立啦。
内容的提问来源于stack exchange,提问作者maxd
相关产品推荐
相关产品推荐

