Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
NON logique (!)
Baseline Widely available
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'opérateur logique NON (!) prend l'opposé logique de la valeur fournie par son opérande. Vrai devient faux et vice versa. Il est généralement utilisé avec lesbooléens. Lorsque cet opérateur est utilisé avec une valeur non-booléenne, il renvoiefalse si son opérande peut être converti entrue ettrue sinon.
Dans cet article
Exemple interactif
const a = 3;const b = -2;console.log(!(a > 0 || b > 0));// Expected output: falseSyntaxe
!expr;Description
Cet opérateur renvoiefalse si son opérande peut être converti entrue ; sinon il renvoietrue.
Si une valeur peut être convertie entrue, on dira en anglais qu'elle esttruthy. À l'inverse, si elle peut être convertie enfalse, on dira en anglais qu'elle estfalsy.
Voici des exemples d'expression qui peuvent être converties enfalse :
null;NaN;0;- la chaîne vide (
""ou''ou``) ; undefined.
Bien que l'opérateur! puisse être utilisé avec des opérandes non booléens, sa valeur de retour sera toujours unbooléen. Pour convertir une valeur (ou une expression) en sa valeur booléenne correspondante, on pourra utiliser un double NON ou le constructeurBoolean.
Exemples
>Utiliser NON
Le code suivant illustre l'utilisation de l'opérateur! pour le NON logique.
let n1 = !true; // !t renvoie falselet n2 = !false; // !f renvoie truelet n3 = !""; // !f renvoie truelet n4 = !"Cat"; // !t renvoie falseDouble NON (!!)
Il est possible d'utiliser deux opérateurs NON à la suite pour convertir n'importe quelle valeur en booléen selon qu'elle esttruthy oufalsy.
Une conversion équivalente pourra être obtenue avec le constructeurBoolean.
let n1 = !!true; // !!truthy renvoie truelet n2 = !!{}; // !!truthy renvoie true : tout objet est truthylet n3 = !!new Boolean(false); // Attention, un objet Boolean est toujours truthy !let n4 = !!false; // !!falsy renvoie falselet n5 = !!""; // !!falsy renvoie falselet n6 = !!Boolean(false); // !!falsy renvoie falseÉquivalence booléenne de la double négation
L'expression qui suit, utilisée avec des booléens :
!!bCondition;est toujours égale à :
bCondition;Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-logical-not-operator> |