[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Operators/Equality [Back]  [Original]

galit (==) - JavaScript | MDN

Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.

View in English Always switch to English

galit (==)

Baseline Large disponibilit

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.

Dans cet article

Exemple interactif

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

Syntaxe

js
x == y;

Description

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 :

    • Si on compare un nombre une chane de caractres, on tentera de convertir la chane en une valeur numrique.
    • Si l'un des oprandes est un boolen, on le convertira en 1 s'il vaut true et en +0 s'il vaut false.
    • Si l'un des oprandes est un objet et que l'autre est un nombre ou une chane de caractres, on tentera de convertir l'objet en une valeur primitive grce aux mthodes 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.

Exemples

Comparaison sans conversion de types

js
1 == 1; // true
"coucou" == "coucou"; // true

Comparaison avec conversion de types

js
"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

Comparaison d'objets

js
const objet1 = { cl: "valeur" };
const objet2 = { cl: "valeur" };

objet1 == objet2; // false
objet2 == objet2; // true

Comparaison entre des chanes de caractres et des objets String

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 :

js
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

Comparaison entre les dates et les chanes de caractres

js
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

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# sec-equality-operators

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page