在 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
。
您可以检查 bool 值作为数字的行为,如下所示
console.log(+true);
// 1
console.log(+false);
// 0
console.log(Number(true));
// 1
console.log(Number(false));
// 0
关于javascript - 链接数学比较运算符时 JavaScript 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34674836/