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

使用空数组时比较运算符JavaScript的奇怪行为,javascript,Javascript,你能解释一下这种奇怪的JavaScript行为吗 第一: [] === [] false [] == [] false 为什么是假的?对象是相同的,因此它应该返回true 第二: [] !== [] true [] != [] true 再说一遍,为什么是真的?对象是相同的 对象不相同。在本例中,将参照与对象进行比较。简单地说,您可以比较这些对象所在的内存中的地址。此规则与比较实际值的原语无关。它们不相同。由指向同一实例的两个操作数定义 var a = [], b =

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

第一:

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

第二:

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

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

对象不相同。在本例中,将参照与对象进行比较。简单地说,您可以比较这些对象所在的内存中的地址。此规则与比较实际值的原语无关。

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

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

两个文本总是计算为两个不同的实例,这两个实例并不相等。如果要查找结构等效性,请参阅。

您可以比较值而不是对象。