有人可以解释为什么以下代码输出false
?
alert(new Date(2014, 8, 8) == new Date(2014, 8, 8));
使用Chrome和Firefox进行测试。小提琴:http://jsfiddle.net/DHilgarth/dn6p8kgm/
答案 0 :(得分:4)
JavaScript中对象之间的比较总是简单的参考比较。仅当两个对象引用引用完全相同的对象时,它们才是相同的。
您可以通过将日期设为数字来比较日期:
alert(+(new Date(2014, 8, 8)) == +(new Date(2014, 8, 8)));
+
一元运算符将通过调用每个实例上的.valueOf()
方法强制将Date实例转换为数字。日期.valueOf()
返回与.getTime()
相同的内容,即基础时间戳。