我试着在chrome控制台比较2个相同的日期:
新日期("2021 - 06 - 23")= =新的日期("2021 - 06 - 23")
给出false
new Date("2021-06-23")>新日期("2021 - 06 - 23")
给出false
,但新日期("2021 - 06 - 23")在= new日期("2021 - 06 - 23")
它给出了true
我不明白为什么大于等于等于为真,而大于也和等于也为假。
请解释。
因为new Date
创建了一个唯一的对象。
即使它们具有相同的属性,两个不同的对象也永远不会相等。
const x = {a : "aaa"};
const y = {a : "aaa"};
console.log(x == y); // false
const z = x; // litteraly the same object
console.log(x == z); // true
Date对象本身不支持更大或相等操作符…它类似于symbol。topprimitive
这个函数在需要转换为适当的原始值时被调用
const object1 = {
[Symbol.toPrimitive](hint) {
if (hint === 'number') {
return 42;
}
return null;
}
};
console.log(+object1);
// expected output: 42
如果你想比较两个日期是否相等那么你可以使用
+new Date() === +new Date()
当你使用+ - * / < >
操作符时,它希望将其转换为数字,所以你实际上是在比较数字而不是对象