2
任何人都可以解释为什么下面的代码输出false
?两个Date对象是相同的,但对它们进行比较还是返回false
alert(new Date(2014, 8, 8) == new Date(2014, 8, 8));
使用Chrome和Firefox进行测试。小提琴:http://jsfiddle.net/DHilgarth/dn6p8kgm/
任何人都可以解释为什么下面的代码输出false
?两个Date对象是相同的,但对它们进行比较还是返回false
alert(new Date(2014, 8, 8) == new Date(2014, 8, 8));
使用Chrome和Firefox进行测试。小提琴:http://jsfiddle.net/DHilgarth/dn6p8kgm/
对象之间的比较在JavaScript中总是简单的参考比较。只有在引用完全相同的对象时,两个对象引用才是相同的。
您可以通过这些数字比较日期:
alert(+(new Date(2014, 8, 8)) == +(new Date(2014, 8, 8)));
的+
元运算符将生效的日期实例通过调用每个.valueOf()
方法转化为数字。日期.valueOf()
返回与.getTime()
相同的东西,即底层时间戳。
啊,因为'Date'是不是一个建立在像字符串类型? – 2014-08-30 14:43:26
@DanielHilgarth它是一个内置类型,但它是* Object *类型。字符串和数字和布尔值被称为“原始”类型。 – Pointy 2014-08-30 14:44:16