为什么在 JavaScript 中 [] !== []
?
我阅读了 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Equality_comparisons_and_sameness,但是没有找到任何解释。
编辑:
我不认为这个问题或这个问题 是我的精确重复。它们问的是==
操作符,它的行为很疯狂。答案回答了我的问题,但问题并不相同。
为什么在 JavaScript 中 [] !== []
?
我阅读了 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Equality_comparisons_and_sameness,但是没有找到任何解释。
编辑:
我不认为这个问题或这个问题 是我的精确重复。它们问的是==
操作符,它的行为很疯狂。答案回答了我的问题,但问题并不相同。
这个操作是对两个数组字面量进行引用检查,以查看它们是否为同一实例。由于您有两个字面量,意味着您构造了两个独立的数组,因此引用检查将返回false。以下操作将返回true:
var a = []
var b = a
//b === a
[]
每次使用时都会创建一个新的(且为空)数组。无论它们的内容如何,你正在比较两个数组,它们的指针(或引用)被进行了比较。
var array = [];
var anotherArray = array; // these two will point to the same array, so they are equal
array === anotherArray; // true
array === []; // false
array.push('something');
anotherArray.length; // 1
因为[]
是一个对象,而对象之间的比较只有在比较的两个对象指向完全相同的对象时才会返回true。你已经创建了两个不同的对象,因此它们不相等。
var x = []
var y = x
var z = []
x == x // true
x == y // true
x == z // false
[] == []
和[] === []
都返回 false。 - HTTP 501==
和===
的行为是相同的,但当我搜索时我并不知道,很多人可能也是这样认为的。所以你提供的重复内容是关于==
的,如果你还不知道答案,那就是另一回事了... - fahrradflucht