关于javascript:为什么[1,[2,3]]!= [1,[2,3]]

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

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How do you determine equality for two JavaScript objects?

为什么[1,[2,3]] == [1,[2,3]]的评价是错误的?

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

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


[]是使数组变为文本的快捷方式,而不是调用new Array()然后填充它。这对{}来说也是一个类似的故事。在您的示例中,实际上是按引用而不是按值进行比较。用new操作符构造的两个对象指向内存中的不同位置,当使用==操作符时,实际上是在说"这些对象指向内存中的相同位置吗?"。若要像预期的那样进行按值比较,需要对要比较的每个数组/对象的成员进行迭代,并逐个比较每个值。


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