Opérateurs de comparaison

Les opérateurs de comparaison comparent les valeurs de deux opérandes et évaluent si l'instruction qu'ils forment est true ou false. L'exemple suivant utilise l'opérateur d'égalité stricte (===) pour comparer deux opérandes: l'expression 2 + 2 et la valeur 4. Étant donné que le résultat de l'expression et la valeur numérique 4 sont identiques, cette expression renvoie true:

2 + 2 === 4
> true

Contrainte de type et égalité

Deux des opérateurs de comparaison les plus fréquemment utilisés sont == pour l'égalité lâche et === pour l'égalité stricte. == effectue une comparaison lâche entre deux valeurs en forçant les opérandes à des types de données correspondants, si possible. Par exemple, 2 == "2" renvoie true, même si la comparaison est effectuée entre une valeur numérique et une valeur de chaîne.

2 == 2
> true

2 == "2"
> true

Il en va de même pour !=, qui ne renvoie true que si les opérandes comparés ne sont pas approximativement égaux.

2 != 3
> true

2 != "2"
> false

Les comparaisons strictes à l'aide de === ou de !== n'effectuent pas de coercition de type. Pour qu'une comparaison stricte aboutisse à true, les valeurs comparées doivent avoir le même type de données. Par conséquent, 2 == "2" renvoie true, mais 2 === "2" renvoie false:

2 === 3
> false

2 === "2"
> false

Pour supprimer toute ambiguïté pouvant résulter de la coercition automatique, utilisez === dans la mesure du possible.

Opérateur Description Utilisation Résultat
=== Strictement égal 2 === 2 true
!== Non strictement égal 2 !== "2" true
== Égal (ou "à peu près égal") 2 == "2" true
!= Not Equal (Non égal à) 2 != "3" true
> Supérieur à 3 > 2 true
>= Supérieur ou égal à 2 >= 2 true
< Inférieur à 2 < 3 true
<= Inférieur ou égal à 2 <= 3 true

Vrai et faux

Toutes les valeurs en JavaScript sont implicitement true ou false, et peuvent être forcées à la valeur booléenne correspondante (par exemple, à l'aide du comparateur "loosely equal"). Un ensemble limité de valeurs est converti en false:

  • 0
  • null
  • undefined
  • NaN
  • Chaîne vide ("")

Toutes les autres valeurs sont converties en true, y compris toute chaîne contenant un ou plusieurs caractères et tous les nombres non nuls. Ces valeurs sont communément appelées valeurs "vraies" et "fausses".

"My string" == true
> true

100 == true
> true

0 == true
> false

Opérateurs logiques

Utilisez les opérateurs logiques AND (&&), OR (||) et NOT (!) pour contrôler le flux d'un script en fonction de l'évaluation de deux instructions conditionnelles ou plus:


2 === 3 || 5 === 5;
> true

2 === 2 && 2 === "2"
> false

2 === 2 && !"My string."
> false

Une expression logique NOT (!) inverse la valeur vraie ou fausse d'un opérande, et renvoie true si l'opérande renvoie false, et false si l'opérande renvoie true:


true
> true

!true
> false

!false
> true

L'utilisation de l'opérateur logique NOT (!) devant un autre type de données, comme un nombre ou une chaîne, force cette valeur à être booléenne et inverse la valeur vraie ou fausse du résultat.

"string"
> "string"

!"string"
> false

0
> 0

!0
> true

Il est courant d'utiliser deux opérateurs NOT pour forcer rapidement les données à leur valeur booléenne correspondante:

!!"string"
> true

!!0
> false

Les opérateurs logiques AND et OR n'effectuent aucune coercition par eux-mêmes. Ils renvoient la valeur de l'un des deux opérandes évalués, l'opérande choisi étant déterminé par cette évaluation.

L'opérateur logique AND (&&) ne renvoie le premier de ses deux opérandes que si cet opérande est évalué à false, et le deuxième opérande dans le cas contraire. Dans les comparaisons qui renvoient des valeurs booléennes, il ne renvoie true que si les opérandes de part et d'autre de l'AND logique renvoient true. Si l'un des côtés renvoie false, la fonction renvoie false.

true && false
> false

false && true
> false

false && false
> false

true && true
> true

Lorsque && est utilisé avec deux opérandes non booléens, le premier opérande est renvoyé tel quel s'il peut être forcé en false. Si le premier opérande peut être forcé en true, le deuxième opérande est renvoyé sans modification:

false && "My string"
> false

null && "My string"
> null

"My string" && false
> false

"My string" && "My second string"
> "My second string"

2 === 2 && "My string"
> "My string"

L'opérateur OR logique (||) ne renvoie le premier de ses deux opérandes que si cet opérande est évalué à true, et le deuxième opérande dans le cas contraire. Dans les comparaisons qui renvoient des valeurs booléennes, cela signifie qu'il renvoie true si l'un des opérandes renvoie true, et si aucun des côtés ne renvoie true, il renvoie false:

true || false
> true

false || true
> true

true || true
> true

false || false
> false

Lorsque vous utilisez || avec deux opérandes non booléens, il renvoie le premier opérande inchangé s'il peut être forcé en true. Si le premier opérande peut être forcé en false, le deuxième opérande est renvoyé sans modification:

false || "My string"
> "My string"

null || "My string"
> "My string"

"My string" || false
> "My string"

"My string" || "My second string"
> "My string"

2 === 2 || "My string"
> true

Opérateur de coalescence nulle

Introduit dans ES2020, l'opérateur de coalescence nulle (??) ne renvoie le premier opérande que si cet opérande a une valeur autre que null ou undefined. Sinon, il renvoie le deuxième opérande.

null ?? "My string"
> "My string"

undefined ?? "My string"
> "My string"

true ?? "My string";
> true

?? est semblable à un OU logique, mais plus strict dans la façon dont le premier opérande est évalué. || renvoie le deuxième opérande pour toute expression pouvant être forcée en false, y compris undefined et null. ?? ne renvoie le deuxième opérande que lorsque le premier opérande est strictement égal à null ou undefined, même s'il peut être forcé en false:

0 ?? "My string";
> 0

false ?? "My string";
> false

undefined ?? "My string";
> "My string"

Opérateurs d'affectation logique

Utilisez des opérateurs d'affectation pour attribuer la valeur d'un deuxième opérateur à un premier opérateur. L'exemple le plus courant est un seul signe égal (=), utilisé pour attribuer une valeur à une variable déclarée.

Utilisez des opérateurs d'attribution logique pour attribuer de manière conditionnelle une valeur à une variable en fonction de la valeur vraie ou fausse de cette variable.

L'opérateur d'affectation logique AND (&&=) évalue le deuxième opérande et l'affecte au premier opérande si et seulement si le premier opérande renvoie true. En d'autres termes, "si le premier opérande est vrai, attribuez-lui plutôt la valeur du deuxième opérande:"

let myVariable = false;
myVariable &&= 2 + 2;
> false

myVariable = true;
myVariable &&= 2 + 2;
> 4

La valeur vraie ou fausse du premier opérande détermine si une affectation est effectuée. Toutefois, essayer d'évaluer le premier opérande à l'aide d'un opérateur de comparaison génère une valeur booléenne true ou false, à laquelle aucune valeur ne peut être attribuée:

let myVariable = 5;
myVariable > 2 &&= "My string"
> SyntaxError: Invalid left-hand side in assignment

L'opérateur d'affectation logique OR (||=) évalue le deuxième opérande et l'attribue au premier opérande si celui-ci évalue à false. En d'autres termes, "si le premier opérande est faux, attribuez-lui plutôt la valeur du deuxième opérande" :

let myVariable = false;
myVariable ||= 2 + 2;
> 4

myVariable = true;
myVariable ||= 2 + 2;
> true

Vérifier vos connaissances

Quel opérateur indique "strictement égal" ?

===
==
=
!=