我在jsfiddle.net上玩,我很好奇为什么这个返回真?

if(0 < 5 < 3) {
    alert("True");
}

这个也一样:

if(0 < 5 < 2) {
    alert("True");
}

但这不是:

if(0 < 5 < 1) {
    alert("True");
}

这种怪癖有用吗?


当前回答

因为0小于5,所以返回true,默认情况下,true是任何值,包括并且可以被赋值为1,而1仍然小于3,同样返回true

其他回答

可能是因为true被假设为1

0 < 5 < 3  -->  true < 3 -->  1 < 3  --> true

因为true < 3,因为true == 1

布尔操作数在数学运算符上操作时返回一个数字。 为了验证这一点,我们做了

true + 1  which gives you 2.

所以0 < 5,用数学运算符(<)操作返回的布尔值(true)将返回一个数字。结果是1<3,返回true

因为0小于5,所以返回true,默认情况下,true是任何值,包括并且可以被赋值为1,而1仍然小于3,同样返回true

不久前,我在Obj-C中遇到了这个问题,对此感到非常困惑。通过这样做,我得到了我想要的结果:

if(0 < 5  && 5 < 3) {
alert("True");}

这当然是假的,所以你不会得到“真”警报。 很高兴我读了这篇文章,我现在知道为什么了。