Perché ! == in JavaScript?

Perché [] !== [] in JavaScript?

Ho letto attraverso https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness ma non ho trovato nulla che spiega questo.

Modifica: Non credo che questa domanda sia un duplicato esatto. Chiede l'operatore == che si comport semplicemente pazzo. La risposta è una risposta alla mia domanda, ma non è la stessa domanda.

Questo fa un controllo di riferimento sui due letterali di matrix per vedere se sono la stessa istanza. Il fatto che hai due letterali significa che stai costruendo due arrays separati, quindi il controllo di riferimento restituisce false. Ciò restituirà vero:

 var a = [] var b = a //b === a 

Ciò è perché abbiamo due riferimenti alla stessa matrix.

[] crea un nuovo arrays (e vuoto) each volta che lo scrivi. Stai confrontando due arrays, indipendentemente dal loro contenuto, il loro puntatore (o riferimento) viene confrontato.

 var arrays = []; var anotherArray = arrays; // these two will point to the same arrays, so they are equal arrays === anotherArray; // true arrays === []; // false arrays.push('something'); anotherArray.length; // 1 

Poiché [] è un object e un confronto di oggetti restituisce solo true quando entrambi i lati del confronto puntano allo stesso object. Hai creato due oggetti distinti, quindi non sono uguali.

 var x = [] var y = x var z = [] x == x // true x == y // true x == z // false