检查chrome控制台运行以下语句时返回奇怪的结果.
0.5 <0.6 <0.7 =>返回false
1.5 <1.6 <1.7 =>返回true
谁能解释这种行为?
alert("0.5 < 0.6 < 0.7 = " + (0.5 < 0.6 < 0.7));
alert("1.5 < 1.6 < 1.7 = " + (1.5 < 1.6 < 1.7));
表达方式
0.5 < 0.6 < 0.7
被评估,像这样
(0.5 < 0.6) < 0.7
由于第一部分是true
,它将是有效的
true < 0.7
两侧将试图将转换为数字,并且自true
是1
当转换为一个数,表达变
1 < 0.7
这是不正确的.这false
就是返回的原因.
同样,在第二种情况下,
1.5 < 1.6
是的true
,所以它变得1
和表达成为
1 < 1.7
是的true
.
您可以将布尔值的行为检查为数字,如下所示
console.log(+true); // 1 console.log(+false); // 0 console.log(Number(true)); // 1 console.log(Number(false)); // 0