Pourquoi deux objets identiques ne sont-ils pas identiques l'un à l'autre ?
En JavaScript, l'opérateur d'égalité (==) et l'opérateur d'égalité stricte (===) sont utilisés pour comparer les valeurs. Cependant, lors de la comparaison d'objets, ces opérateurs se comportent différemment de ce à quoi vous pourriez vous attendre.
Considérez le code suivant :
var a = {}; var b = {}; console.log(a == b); // returns false console.log(a === b); // returns false
Ce code enregistre faux pour les deux expressions, même si a et b sont tous deux objets vides. Pourquoi ?
La principale différence entre l'égalité régulière (==) et stricte (===) est que l'opérateur d'égalité stricte désactive la conversion de type. Puisque a et b sont tous deux des objets, le type d'opérateur d'égalité n'a pas d'importance dans ce cas.
Indépendamment de l'opérateur d'égalité utilisé, les comparaisons d'objets ne sont évaluées comme vraies que si vous comparez le même objet exact . En d'autres termes, étant donné var a = {}, b = a, c = {};, a == a, a == b, mais a != c.
Deux objets différents (même s'ils ont zéro ou les mêmes propriétés exactes) ne seront jamais comparables de manière égale. Pour comparer l'égalité des propriétés de deux objets, vous pouvez utiliser la méthode Object.is() ou l'approche décrite dans la réponse fournie.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!