更具体地说,大于或等于操作。
逻辑上 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
?
最佳答案
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/