更具体地说,操作大于或等于.
逻辑上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);
Run Code Online (Sandbox Code Playgroud)
生产false,false,false,true,true?
console.log(d1 > d2);
console.log(d1 < d2);
Run Code Online (Sandbox Code Playgroud)
这些首先将它们转换为数字,然后进行比较.由于它们同时存在,因此它们具有相同的数字,因此一个不大于或小于另一个.
console.log(d1 == d2);
Run Code Online (Sandbox Code Playgroud)
这将检查日期引用是否相同.但它们不是两个不同的对象.
console.log(d1 >= d2);
console.log(d1 <= d2);
Run Code Online (Sandbox Code Playgroud)
这些比较数字,但也相等.如果你这样做:
console.log(+d1 === +d2);
Run Code Online (Sandbox Code Playgroud)
你看他们所代表的数字相等.
TLDR:使用===并手动转换类型以防止这种奇怪的行为......
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |