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

时间:2018-02-16 19:30:38

标签: 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

1 个答案:

答案 0 :(得分:8)

 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:使用===并手动转换类型以防止出现这种奇怪的行为......

相关问题