3

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

第一的 :

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

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

第二 :

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

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

4

2 回答 2

7

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

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

两个文字总是评估为两个不同的实例,它们不被认为是相等的。如果您正在寻找结构等效性,请参阅如何在 JavaScript 中比较数组?.

于 2013-10-11T10:43:23.533 回答
4

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

于 2013-10-11T10:29:11.910 回答