为什么[] !== []
在 JavaScript 中?
我通读了https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness但我找不到任何解释这一点的东西。
为什么[] !== []
在 JavaScript 中?
我通读了https://developer.mozilla.org/en-US/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