Why is [] !== [] in JavaScript? [duplicate]

 ̄綄美尐妖づ 提交于 2019-11-27 23:14:51

That does a reference check on the two array literals to see if they are the same instance. The fact that you have two literals means that you are constructing two separate arrays, therefore the reference check returns false. This would return true:

var a = []
var b = a

//b === a

This is because we have two references to the same array.

[] creates a new (and empty) array each time you write it. You are comparing two arrays, regardless of their content, their pointer (or reference) are being compared.

var array = [];
var anotherArray = array; // these two will point to the same array, so they are equal


array === anotherArray; // true
array === []; // false


array.push('something');
anotherArray.length; // 1

Because [] is an object, and a comparison of objects only returns true when both sides of the comparison point to the exact same object. You have created two separate objects, so they aren't equal.

var x = []
var y = x
var z = []

x == x // true
x == y // true
x == z // false
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!