1

各要素には同じ値が含まれています。この値に対して単独でチェックすると、すべてがチェックアウトされます。しかし、互いに比較した場合、それらは等しいとは示されていません。ヘルプ!ありがとう!

time[x] == "2013-02-26 14:00:00"   ?

true

reference[x] == "2013-02-26 14:00:00"  ?

true

time[x] == reference[x]  ?

false

time[x].valueOf() == reference[x].valueOf()  ?

false

4

1 に答える 1

3

これは、2つの変数のタイプが異なるために発生する可能性があります。

変数の1つがDateインスタンスを保持し、もう1つがaの場合、String両方を文字列リテラルと比較するとtrueが返され、valueOf()結果を比較するとfalseが返されます。これは、人間が読める形式ではなく、エポックからvalueOf()Date戻り数がミリ秒であるためです。日付の(ではなくtoString())。

var a = new Date()
a.toString() //"Wed Feb 27 2013 01:41:51 GMT+0300 (MSK)"
a.valueOf()  //1361918511306

var b = "Wed Feb 27 2013 01:41:51 GMT+0300 (MSK)"
b.toString() //"Wed Feb 27 2013 01:41:51 GMT+0300 (MSK)"
b.valueOf()  //"Wed Feb 27 2013 01:41:51 GMT+0300 (MSK)"

a == "Wed Feb 27 2013 01:41:51 GMT+0300 (MSK)" //true
b == "Wed Feb 27 2013 01:41:51 GMT+0300 (MSK)" //true
a == b //true
a === b //false - types are being compared as well
a.valueOf() == b.valueOf() //false - 1361918511306 compared to "Wed Feb 27 2013 01:41:51 GMT+0300 (MSK)"
于 2013-02-26T21:39:17.910 に答える