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

时间:2013-10-11 10:28:19

标签: javascript

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

第一:

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

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

第二:

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

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

2 个答案:

答案 0 :(得分:6)

他们并不完全相同。 Object identity由指向同一实例的两个操作数定义。

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

两个文字总是评估两个不同的实例,这些实例不相同。如果您正在寻找结构等价,请参阅How to compare arrays in JavaScript?

答案 1 :(得分:3)

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