为何x=9时5 < x < 9的条件判断结果为true?
问题原因解析
先看你给出的代码:
let x = 9; if (5 < x < 9) { console.log('less than 9'); }
当x=9时代码输出了'less than 9',核心原因是JavaScript不支持数学里那种连续比较的写法,它会把表达式从左到右拆分计算:
- 先算
5 < x,此时x=9,5<9的结果是布尔值true - 接着算
true < 9,JavaScript会把布尔值true自动转换成数字1,于是变成1 < 9,结果为true - 因为整个if条件判定为true,所以执行了console.log语句,出现不符合预期的输出
正确的写法应该用逻辑与运算符&&连接两个独立的比较表达式:
let x = 9; if (5 < x && x < 9) { console.log('less than 9'); }
这样当x=9时,x < 9的结果是false,整个条件为false,就不会执行console.log了。
内容的提问来源于stack exchange,提问作者DevMoutarde
相关产品推荐
相关产品推荐

