我在下面有一些空数组,在我比较它们后,结果都是假的。
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)我可以在某种程度上找到答案 this page,但对于其他两个,我无法弄清楚原因。有人能帮助我吗?
答案 0 :(得分:0)
答案在所有情况下都是一样的。要么使用此new Array[]
或此[]
,将创建一个新数组,并将对此数组的引用存储到左侧的变量中。话虽如此,在您的情况下,您创建4个数组。因此,您需要在变量a
,aa
,b
和bb
中对它们进行不同的引用。这就是你提到的所有表达式被评估为false的原因。 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);