2017-04-09 1 views
0

J'ai obtenu quelques tableaux vides ci-dessous et après les avoir comparés, les résultats sont tous faux.JavaScript: opérateurs de comparaison entre les tableaux

var a = new Array(); 
var aa = new Array(); 
var b = []; 
var bb = []; 
document.write(a == b);  // false 
document.write(a == aa); // false 
document.write(b == bb); // false 

Pour la première comparaison (a == b) Je peux trouver un peu la réponse à this page, mais pour deux autres que je ne peux pas comprendre pourquoi. Est-ce que quelqu'un peut m'aider?

Répondre

0

La réponse est la même dans tous les cas. Soit vous utilisez ce new Array[] ou ce [], un nouveau tableau serait créé et la référence à ce tableau serait stockée dans la variable à gauche. Cela étant dit, dans votre cas, vous créez 4 tableaux. Donc vous avez pour différentes références à eux dans les variables a, aa, b et bb. C'est la raison pour laquelle toutes les expressions que vous avez mentionnées sont évaluées comme fausses. L'opérateur égal ne compare pas les éléments dans les tableaux seulement les références à ceux-ci.

Considérons l'extrait suivant. Depuis arrayA, arrayB et arrayC contient une référence au même tableau, lorsque vous poussez des éléments à arrayC et que vous affichez dans la console les tableaux, vous verriez le même contenu.

var arrayA = []; 
 
var arrayB = arrayA; 
 
var arrayC = arrayB; 
 

 
// Apparently this evaluate to true. 
 
console.log(arrayC == arrayA); 
 

 
arrayC.push(1); 
 
arrayC.push(2); 
 
arrayC.push(3); 
 
arrayC.push(4); 
 

 
console.log(arrayA); 
 
console.log(arrayB); 
 
console.log(arrayC);

+0

Merci! Je suis clair maintenant. J'ai pensé "==" comparer la valeur tandis que "===" comparer la valeur et le type. –

+0

Vous êtes les bienvenus! – Christos