1

我正在查看 ES5 的第 11.9.6 条,试图弄清楚为什么 [1,2,3] === [1,2,3] 返回 false。

编码:

a = [1,2,3]
b = [1,2,3]
a === b // false

严格相等比较算法的相关规则:

x === y

(1) 如果 Type(x) 与 Type(y) 不同,则返回false

...

...

...

(7) 如果 x 和 y 引用同一个对象,则返回 true。否则返回false

任何想法为什么解释器返回错误?

4

5 回答 5

4

a并且b是两个不同的对象,它们恰好具有相同的 Number 值。如果你这样做了,a[0] = 42;那么b[0]仍然等于 1。

于 2012-08-12T17:16:52.327 回答
0

它们不是指同一个对象。就那么简单。

于 2012-08-12T17:16:32.927 回答
0

它看起来像你的a并且b指的是不同的对象。它们可能每个都包含相同的值并且是同一类的实例,但您可以更改其中一个而另一个保持不变。

于 2012-08-12T17:17:02.047 回答
0

(7) Return true if x and y refer to the same object. Otherwise return false.- 它们不是指同一个对象。

于 2012-08-12T17:17:10.523 回答
0

因为创建了两个对象。

于 2012-08-12T17:17:41.067 回答