为什么是[1,[2,3]]!=[1,[2,3]]

Why is [1,[2,3]] != [1,[2,3]]

本文关键字:为什么      更新时间:2024-05-27

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

为什么[1,[2,3]] == [1,[2,3]]的评估结果为false?

此外,为什么会发生这种情况:

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

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

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