两个Date对象是相同的,但比较它们仍然返回false

时间:2014-08-30 14:41:08

标签: javascript

有人可以解释为什么以下代码输出false

alert(new Date(2014, 8, 8) == new Date(2014, 8, 8));

使用Chrome和Firefox进行测试。小提琴:http://jsfiddle.net/DHilgarth/dn6p8kgm/

1 个答案:

答案 0 :(得分:4)

JavaScript中对象之间的比较总是简单的参考比较。仅当两个对象引用引用完全相同的对象时,它们才是相同的。

您可以通过将日期设为数字来比较日期:

alert(+(new Date(2014, 8, 8)) == +(new Date(2014, 8, 8)));

+一元运算符将通过调用每个实例上的.valueOf()方法强制将Date实例转换为数字。日期.valueOf()返回与.getTime()相同的内容,即基础时间戳。