我在jsfiddle.net上玩,我很好奇为什么这个返回真?
if(0 < 5 < 3) {
alert("True");
}
这个也一样:
if(0 < 5 < 2) {
alert("True");
}
但这不是:
if(0 < 5 < 1) {
alert("True");
}
这种怪癖有用吗?
我在jsfiddle.net上玩,我很好奇为什么这个返回真?
if(0 < 5 < 3) {
alert("True");
}
这个也一样:
if(0 < 5 < 2) {
alert("True");
}
但这不是:
if(0 < 5 < 1) {
alert("True");
}
这种怪癖有用吗?
当前回答
操作顺序导致(0 < 5 < 3)在javascript中被解释为((0 < 5)< 3),产生(true < 3), true被计数为1,导致它返回true。
这也是为什么(0 < 5 < 1)返回false,(0 < 5)返回true,这被解释为1,导致(1 < 1)。
其他回答
因为0小于5,所以返回true,默认情况下,true是任何值,包括并且可以被赋值为1,而1仍然小于3,同样返回true
试着把你的结果写成Number()
if(Number(0) < Number(5) < Number(3)) {
alert("True");
}
或者试试这个:
if(Number(0) < Number(5) && Number(5) < Number(3)) {
alert("True");
}
我谷歌了一下,因为我得到(3 >= 20)//返回true,我猜javascript试图检查3作为布尔值,因为我从elm.getAttribute()得到这个值;函数console.log();正在以字符串形式打印。
它的值是0<5当1<3为真时返回1为真吗?
操作符“<”不能应用于类型为“bool”和“int”的操作数
不久前,我在Obj-C中遇到了这个问题,对此感到非常困惑。通过这样做,我得到了我想要的结果:
if(0 < 5 && 5 < 3) {
alert("True");}
这当然是假的,所以你不会得到“真”警报。 很高兴我读了这篇文章,我现在知道为什么了。
0 < 5 < 3
==> ( ( 0 < 5 ) < 3 )
==> true < 3
==> 1 < 3
==> true