JavaScript:数组之间的比较运算符

时间:2017-04-09 08:07:10

标签: javascript arrays compare equals

我在下面有一些空数组,在我比较它们后,结果都是假的。

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,但对于其他两个,我无法弄清楚原因。有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

答案在所有情况下都是一样的。要么使用此new Array[]或此[],将创建一个新数组,并将对此数组的引用存储到左侧的变量中。话虽如此,在您的情况下,您创建4个数组。因此,您需要在变量aaabbb中对它们进行不同的引用。这就是你提到的所有表达式被评估为false的原因。 equals运算符不会比较数组中的项目,只是对它们的引用。

让我们考虑以下代码段。由于arrayAarrayBarrayC包含对同一数组的引用,因此当您将项目推送到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);