为什么javascript date1==date2不工作?

为什么javascript date1==date2不工作?,javascript,Javascript,我有两个javascript日期,dt和Frefdate。在firebug中,两个值都是日期{Fri Apr 08 2005 00:00:00 GMT+1000(澳大利亚东部夏季时间)} 但是dt==Frefdate是错误的。 我必须使用dt.valueOf()==Frefdate.valueOf()来比较这两个日期。为什么? 在w3schools网站中,日期比较可以是date1>date2。(请参阅) 谢谢。这两个日期是两个不同的对象,因此它们不是“对象相等”。JavaScript允许您使用=

我有两个javascript日期,dt和Frefdate。在firebug中,两个值都是日期{Fri Apr 08 2005 00:00:00 GMT+1000(澳大利亚东部夏季时间)}

但是dt==Frefdate是错误的。 我必须使用dt.valueOf()==Frefdate.valueOf()来比较这两个日期。为什么?

在w3schools网站中,日期比较可以是date1>date2。(请参阅)


谢谢。

这两个日期是两个不同的对象,因此它们不是“对象相等”。JavaScript允许您使用==比较字符串和数字,但所有其他类型都作为对象进行比较。

当您比较两个不同的日期对象时,您不是在比较它们的值,而是在比较它们实际上是同一个对象


即使两个日期对象设置为相同的日期和时间,它们也是两个独立的实例。把它想象成将引用与内存中的结构进行比较。每个日期的内存位置将不同。

两个日期是两个不同的对象。它是
false
,原因相同
{}={}
false
:它们是不同的对象
.valueOf
返回一个数字,如果两个数字的值相同,则两个数字相等。