我在下面得到了一些空数组,在我比较它们之后,结果都是假的。
var a = new Array();
var aa = new Array();
var b = [];
var bb = [];
document.write(a == b); // false
document.write(a == aa); // false
document.write(b == bb); // false
对于第一个比较(a = = b(,我可以在这个页面,但对于其他两个我只是不知道为什么。有人可以帮助我吗?
答案在所有情况下都是一样的。无论是使用此new Array[]
还是使用此[]
,都会创建一个新数组,并且对该数组的引用将存储到左侧的变量中。话虽如此,在您的情况下,您创建 4 个数组。因此,在变量 a
、aa
、b
和 bb
中对它们有不同的引用。这就是你提到的所有表达式都被评估为错误的原因。equals 运算符不会比较数组中的项目,只会比较对它们的引用。
让我们考虑以下代码片段。由于 arrayA
、arrayB
和 arrayC
包含对同一数组的引用,因此当您将项目推送到arrayC
并将数组输出到控制台时,您将看到相同的内容。
var arrayA = [];
var arrayB = arrayA;
var arrayC = arrayB;
// Apparently this evaluate to true.
console.log(arrayC == arrayA);
arrayC.push(1);
arrayC.push(2);
arrayC.push(3);
arrayC.push(4);
console.log(arrayA);
console.log(arrayB);
console.log(arrayC);