【发布时间】:2013-10-11 18:43:23
【问题描述】:
你能解释一下这种奇怪的 JavaScript 行为吗?
第一的 :
[] === [] false
[] == [] false
为什么是假的?对象是相同的,因此它应该返回 true。
第二 :
[] !== [] true
[] != [] true
再一次,为什么是真的?对象是相同的。
【问题讨论】:
-
您可以比较值而不是对象。
标签: javascript
你能解释一下这种奇怪的 JavaScript 行为吗?
第一的 :
[] === [] false
[] == [] false
为什么是假的?对象是相同的,因此它应该返回 true。
第二 :
[] !== [] true
[] != [] true
再一次,为什么是真的?对象是相同的。
【问题讨论】:
标签: javascript
它们并不相同。 Object identity 由指向同一实例的两个操作数定义。
var a = [],
b = [];
a == b; // false
a == a; // true
两个文字总是评估为两个不同的实例,这被认为是不相等的。如果您正在寻找结构等效性,请参阅How to compare arrays in JavaScript?。
【讨论】:
对象是不是完全相同的。在这种情况下,您比较对对象的引用。简单地说,您比较这些对象所在的内存中的地址。此规则与您比较实际值的原语无关。
【讨论】: