Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
可能重复: 如何确定两个 JavaScript 对象的相等性?
为什么[1,[2,3]] == [1,[2,3]]评估为假?
[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指向内存中的不同位置,当您使用==运算符时,您实际上是在说“这些对象是否指向内存中的同一位置?”。要像您期望的那样进行按值比较,您需要遍历要比较的每个数组/对象的成员,并逐个比较每个值。
[]
new Array()
{}
new
==