【问题标题】:Weird behavior of comparison operator JavaScript when using empty array [duplicate]使用空数组时比较运算符 JavaScript 的奇怪行为 [重复]
【发布时间】:2013-10-11 10:28:19
【问题描述】:

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

第一:

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

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

第二:

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

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

【问题讨论】:

  • 你可以比较值而不是对象。

标签: javascript


【解决方案1】:

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

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

两个字面量总是计算为两个不同的实例,它们不被认为是相等的。如果您正在寻找结构等效性,请参阅How to compare arrays in JavaScript?

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-10-11
      • 2014-10-22
      • 2015-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多