使用空数组时比较运算符 JavaScript 的奇怪行为

Weird behavior of comparison operator JavaScript when using empty array

本文关键字:JavaScript 运算符 数组 比较      更新时间:2023-09-26

你能解释一下这种奇怪的JavaScript行为吗?

第一:

[] === []  false
[] ==  []  false

为什么是假的?对象是相同的,因此它应该返回 true。

第二:

 [] !== []  true
 [] !=  []  true

再说一遍,为什么是真的?对象是相同的。

它们并不相同。对象标识由指向同一实例的两个操作数定义。

var a = [],
    b = [];
a == b; // false
a == a; // true
两个

文本总是计算为两个不同的实例,这两个实例不被视为相等。如果您正在寻找结构等效性,请参阅如何在 JavaScript 中比较数组?。

对象相同。在这种情况下,您可以比较对对象的引用。简单来说,您可以比较内存中这些对象所在的地址。此规则与比较实际值的基元无关。