Opérateurs de comparaison

Les opérateurs de comparaison comparent les valeurs de deux opérandes et déterminent 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

Coercition de type et égalité

Deux des opérateurs de comparaison les plus fréquemment utilisés sont == pour une égalité libre et === pour une égalité stricte. == effectue une comparaison approximative entre deux valeurs en forçant les opérandes à correspondre aux types de données, 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 faiblement égaux.

2 != 3
> true

2 != "2"
> false

Les comparaisons strictes utilisant === ou !== n'effectuent pas de coercition de type. Pour qu'une comparaison stricte soit évaluée sur true, les valeurs comparées doivent avoir le même type de données. De ce fait, 2 == "2" renvoie true, mais 2 === "2" renvoie false:

2 === 3
> false

2 === "2"
> false

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

Opérateur Description Utilisation Résultat
=== Strictement égal 2 === 2 true
!== Pas strictement égal 2 !== "2" true
== Égal à (ou "grossièrement égal") 2 == "2" true
!= Not Equal (Non égal à) 2 != "3" true
> Supérieur à 3 > 2 true
>= Supérieur ou égal à 2 >= 2 true
< Moins de 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 sur la valeur booléenne correspondante, par exemple à l'aide du comparateur "grossièrement égal". Un ensemble limité de valeurs est converti (par coercition) en false:

  • 0
  • null
  • undefined
  • NaN
  • Une chaîne vide ("")

Toutes les autres valeurs sont converties de manière forcée en true, y compris toute chaîne contenant un ou plusieurs caractères et tous les nombres non nuls. Ce sont des valeurs communément appelées « vérité » et « fausse ».

"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 d'au moins deux instructions conditionnelles:


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

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

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

Une expression logique NOT (!) annule la valeur véridique ou fausse d'un opérande, en évaluant 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, convertit cette valeur en valeur booléenne et inverse la valeur véridique 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 la coercition de données dans leur valeur booléenne correspondante:

!!"string"
> true

!!0
> false

Les opérateurs logiques AND et OR n'effectuent pas de coercition seuls. Elles 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 son résultat est false, et le deuxième dans le cas contraire. Dans les comparaisons qui évaluent des valeurs booléennes, elle ne renvoie true que si les opérandes des deux côtés de l'opérateur logique AND ont la valeur true. Si l'un ou l'autre des côtés renvoie false, il 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é à true, le deuxième opérande est renvoyé tel quel:

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 logique OU (||) ne renvoie le premier de ses deux opérandes que si son opérande renvoie true, et le deuxième dans le cas contraire. Dans les comparaisons qui renvoient des valeurs booléennes, cela signifie qu'elle renvoie true si l'un des opérandes renvoie true. Si aucun côté n'évalue la valeur 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 non modifié s'il peut être forcé en true. Si le premier opérande peut être forcé à false, le deuxième opérande est renvoyé tel quel:

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 coalescing nul

Introduit dans ES2020, "l'opérateur de coalisation nullh" (??) 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 opérateur logique "OR", mais il est 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. ?? renvoie le deuxième opérande lorsque le premier est autre chose que null ou undefined, même s'il peut être forcé à 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 véridique ou erronée de cette variable.

L'opérateur d'affectation logique AND (&&=) évalue le deuxième opérande et l'attribue au premier s'il n'est évalué que si le premier est évalué à true. Autrement dit, "si le premier opérande est vrai, attribuez-lui la valeur du deuxième opérande à la place:"

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

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

La valeur véridique ou erronée du premier opérande détermine si une attribution est effectuée. Toutefois, lorsque vous essayez d'évaluer le premier opérande à l'aide d'un opérateur de comparaison, vous obtenez une valeur booléenne true ou false, qui ne peut pas se voir attribuer une valeur:

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 si le premier opérande prend la valeur false. Autrement dit, "si le premier opérande est faux, attribuez-lui la valeur du deuxième opérande à la place:"

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

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

Testez vos connaissances

Quel opérateur indique "strictement égal" ?

===
==
=
!=