0

可能重复:
如何确定两个 JavaScript 对象的相等性?

为什么[1,[2,3]] == [1,[2,3]]评估为假?

另外,为什么会这样:

var g = { a:1, b:2, c:3 };
g == { a:1, b:2, c:3 }; // false!! 
4

2 回答 2

3

因为 [] 和 {} 创建了对象的新实例并且它们不相等。

于 2012-07-31T21:17:30.923 回答
3

[]是创建数组文字而不是调用new Array()然后填充它的快捷方式。这是一个类似的故事{}。在您的示例中,您实际上是按引用而不是按值进行比较。使用运算符构造的两个对象new指向内存中的不同位置,当您使用==运算符时,您实际上是在说“这些对象是否指向内存中的同一位置?”。要像您期望的那样进行按值比较,您需要遍历要比较的每个数组/对象的成员,并逐个比较每个值。

于 2012-07-31T21:18:07.927 回答