javascript - JavaScript 如何评估大于和小于操作?

标签 javascript

更具体地说,大于或等于操作。

逻辑上 n >= k 应该等于 n > k || n == k 但事实并非如此。

为什么会这样:

var d1 = new Date(2018, 1, 16);
var d2 = new Date(2018, 1, 16);
console.log(d1 > d2);
console.log(d1 < d2);
console.log(d1 == d2);
console.log(d1 >= d2);
console.log(d1 <= d2);

产生falsefalsefalsetruetrue ?

最佳答案

 console.log(d1 > d2);
 console.log(d1 < d2);

这些函数首先将它们转换为数字,然后再进行比较。因为它们同时存在,所以它们得到相同的数字,所以一个不比另一个大或小。

 console.log(d1 == d2);

这会检查日期引用是否相同。但它们不是,因为它们是两个不同的对象。

 console.log(d1 >= d2);
 console.log(d1 <= d2);

这些通过数字比较它们,但也是为了平等。如果你这样做:

 console.log(+d1 === +d2);

你看到他们代表的数字是相等的。

引用: == <=


TLDR:使用 === 并手动转换类型以防止这种奇怪的行为......

关于javascript - JavaScript 如何评估大于和小于操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48833624/

相关文章:

javascript - 填充 dojo dijit 组合框

javascript - 项目的对象或数组

javascript - jquery 可拖动函数

javascript - 使用异步库寻找 if then else 模式

javascript - (jQuery.js 错误)未捕获错误 : Syntax error, 无法识别的表达式:[href=#]

javascript - 单击链接时更改照片不透明度

javascript - 每次提交时数据库条目数都会增加一倍

javascript - 关闭模态框会重新加载页面

javascript - 使用正则表达式解析 URL 查询参数

javascript - 滚动以隐藏 Javascript 模式