javascript - 链接数学比较运算符时 JavaScript 的奇怪行为

标签 javascript

在 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

两边都会尝试转换为数字,由于转换为数字时 true1,因此表达式变为

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/

相关文章:

javascript - Nuxt.js:方法中的迭代会导致问题

javascript - 为什么 Javascript 比较不​​适用于对象?

javascript - 如何从 GOOGLE AJAX Feed API 获取新闻项目的描述

javascript - 可以从网页转储 AJAX 内容吗?

javascript - Chrome 的 JavaScript 控制台在评估对象方面是否懒惰?

javascript - 如何在状态更改时重新渲染子组件(父)reactjs

javascript - 对象数组在其上运行过滤器后返回未定义

javascript - Angular SPA 中的一百万个页面

javascript - 在 Jquery 模板上,如何动态设置 css 类?

javascript - 如何在 Vue.js 3 中使用 Vue 3 Meta?