我正在考虑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 。
解释器返回false的任何想法?
答案 0 :(得分:4)
a
和b
是两个不同的对象,它们碰巧具有相同的Number值。如果您执行了a[0] = 42;
,那么b[0]
仍将等于1。
答案 1 :(得分:0)
他们没有引用同一个对象。就这么简单。
答案 2 :(得分:0)
您的a
和b
看起来像是指不同的对象。它们可能包含相同的值,并且是同一个类的实例,但您可以更改一个,另一个保持不变。
答案 3 :(得分:0)
(7) Return true if x and y refer to the same object. Otherwise return false.
- 他们没有提到同一个对象。
答案 4 :(得分:0)
因为创建了两个对象。