| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Operators/Equality | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
Cette fonctionnalit est bien tablie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
L'oprateur d'galit (==) vrifie si ses deux oprandes sont gaux et renvoie un boolen indiquant le rsultat de la comparaison. la diffrence de l'oprateur d'galit stricte, l'oprateur d'galit tente de convertir ses oprandes avant la comparaison si ceux-ci sont de types diffrents.
console.log(1 == 1);
// Expected output: true
console.log("hello" == "hello");
// Expected output: true
console.log("1" == 1);
// Expected output: true
console.log(0 == false);
// Expected output: true
x == y;
Les oprateurs d'galit (== et !=) utilisent l'algorithme de comparaison d'galit abstraite pour comparer deux oprandes. On peut le rsumer ainsi :
Si les oprandes sont deux objets, on renvoie true uniquement si les deux oprandes rfrencent le mme objet.
Si un oprande vaut null et que l'autre vaut undefined, on renvoie true.
Si les oprandes sont de types diffrents, on tente une conversion pour avoir le mme type de part et d'autre avant la comparaison :
true et en +0 s'il vaut false.valueOf() et toString() de l'objet.Si les oprandes sont du mme types, on les compare comme suit :
String : on renvoie true uniquement si les deux oprandes ont les mmes caractres dans le mme ordre.Number : on renvoie true uniquement si les deux oprandes ont la mme valeur. +0 et -0 sont considrs comme la mme valeur. Si au moins un des oprandes vaut NaN, on renvoie false.Boolean : on renvoie true uniquement si les deux oprandes valent tous les deux true ou s'ils valent tous les deux false.La diffrence fondamentale entre cet oprateur et l'oprateur d'galit stricte (===) est que ce dernier n'opre pas de conversion de type. L'oprateur d'galit stricte considre toujours que deux valeurs de types diffrents sont diffrentes.
1 == 1; // true
"coucou" == "coucou"; // true
"1" == 1; // true
1 == "1"; // true
0 == false; // true
0 == null; // false
0 == undefined; // false
0 == !!null; // true, voir la documentation pour !!
0 == !!undefined; // true, voir la documentation pour !!
null == undefined; // true
const nombre1 = new Number(3);
const nombre2 = new Number(3);
nombre1 == 3; // true
nombre1 == nombre2; // false
const objet1 = { cl: "valeur" };
const objet2 = { cl: "valeur" };
objet1 == objet2; // false
objet2 == objet2; // true
On notera que les chanes de caractres construites avec new String() sont des objets. Si on compare une telle valeur avec une chane de caractres "primitives", l'objet String sera converti en une chane de caractres et les contenus de ces chanes seront compars. Toutefois, si les deux oprandes sont des objets String, ils seront compars comme tels et devront rfrencer le mme objet pour tre considrs gaux :
const string1 = "coucou";
const string2 = String("coucou");
const string3 = new String("coucou");
const string4 = new String("coucou");
console.log(string1 == string2); // true
console.log(string1 == string3); // true
console.log(string2 == string3); // true
console.log(string3 == string4); // false
console.log(string4 == string4); // true
const d = new Date("December 17, 1995 03:24:00");
const s = d.toString(); // par exemple : "Sun Dec 17 1995 03:24:00 GMT-0800 (Pacific Standard Time)"
console.log(d == s); //true
| Spcification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-equality-operators |
Cette page a t modifie le 24 juin 2025 par les contributeurices du MDN.
Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |