我正在查看 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。
任何想法为什么解释器返回错误?
我正在查看 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。
任何想法为什么解释器返回错误?
a
并且b
是两个不同的对象,它们恰好具有相同的 Number 值。如果你这样做了,a[0] = 42;
那么b[0]
仍然等于 1。
它们不是指同一个对象。就那么简单。
它看起来像你的a
并且b
指的是不同的对象。它们可能每个都包含相同的值并且是同一类的实例,但您可以更改其中一个而另一个保持不变。
(7) Return true if x and y refer to the same object. Otherwise return false.
- 它们不是指同一个对象。
因为创建了两个对象。