1

每个元素都包含相同的值。当他们自己检查这个值时,一切都会检查出来。但是当相互比较时,它们并不相等。帮助!谢谢!

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

真的

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

真的

time[x] == reference[x]  ?

错误的

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

错误的

4

1 回答 1

3

这可能会发生,因为这两个变量的类型不同。

如果其中一个变量包含一个Date实例而另一个包含 a String,则将它们与字符串文字进行比较将返回 true,而比较它们的valueOf()结果将返回 false,因为valueOf()aDate返回自纪元以来的毫秒数,而不是人类可读的表示日期(相对于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 回答