Possible Duplicate:
How do you determine equality for two JavaScript objects?
为什么[1,[2,3]] == [1,[2,3]]
评估结果为假?
另外,为什么会发生这种情况:
var g = { a:1, b:2, c:3 };
g == { a:1, b:2, c:3 }; // false!!
最佳答案
[]
是创建数组文字的快捷方式,而不是调用 new Array()
然后填充它。 {}
的情况类似。在您的示例中,您实际上是通过引用而不是通过值进行比较。使用 new
运算符构造的两个对象指向内存中的不同位置,当您使用 ==
运算符时,您实际上是在说“这些对象是否指向内存中的同一位置”内存?”。要像您期望的那样进行按值比较,您需要迭代要比较的每个数组/对象的成员,并逐一比较每个值。
关于javascript - 为什么 [1,[2,3]] != [1,[2,3]],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11749105/