先来看一个例子:
if(100 < 400 < 200) {
console.log(true)
} else {
console.log(false)
}
字面上看应该打印 false,然而运行代码之后发现打印了 true:
原因:
在js的逻辑中,程序会按运算符优先级,先计算左边的,左边的公式返回的是布尔值,再拿这个布尔值结合右边的计算;在js的逻辑运算中, false默认为0, true默认为1。
所以这个例子中,先执行了:100 < 400 ,结果为true(即1);
再执行:1 < 200,于是结果返回了true。
所以对于这种大于小于符号连用的场景,应该是要分来写:
if(100 < 400 && 400 < 200) {
console.log(true)
} else {
console.log(false)
}
执行结果: