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
ですか?