8

ECMA スクリプト標準によると、次のコードは true を返す必要がありますが、そうではありません。

d = new Date() ;
d.setTime(1436497200000) ;
alert( d == 1436497200000 ) ;

セクション11.9.3は次のように述べています。

  1. Type(x) が String または Number のいずれかで、Type(y) が Object の場合、比較 x == ToPrimitive(y) の結果を返します。

次に、セクション8.12.8は、メソッドToPrimitiveの結果を返すと述べていvalueOfます。つまり、上記の例の最後の行は次のようになります。

alert( d.valueOf() == 1436497200000 );

true確かに、どちらが返されますか。

最初のケースが返されないのはなぜtrueですか?

4

2 に答える 2