更具体地说,操作大于或等于。
逻辑上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);
生成false
,false
,false
,true
,true
?
答案 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:使用===
并手动转换类型以防止出现这种奇怪的行为......