根据 ECMA 脚本标准,以下代码应该返回 true,但它不会:
d = new Date() ;
d.setTime(1436497200000) ;
alert( d == 1436497200000 ) ;
第11.9.3节说:
- 如果 Type(x) 是 String 或 Number 且 Type(y) 是 Object,则返回比较结果 x == ToPrimitive(y)。
然后,第8.12.8节说返回方法ToPrimitive
的结果valueOf
。这意味着我上面示例中的最后一行应该等同于:
alert( d.valueOf() == 1436497200000 );
确实返回true
。
为什么第一个案例不返回true
?