NON logique (!)
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 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 les booléens. Lorsque cet opérateur est utilisé avec une valeur non-booléenne, il renvoie false
si son opérande peut être converti en true
et true
sinon.
Exemple interactif
Syntaxe
!expr;
Description
Cet opérateur renvoie false
si son opérande peut être converti en true
; sinon il renvoie true
.
Si une valeur peut être convertie en true
, on dira en anglais qu'elle est truthy. À l'inverse, si elle peut être convertie en false
, on dira en anglais qu'elle est falsy.
Voici des exemples d'expression qui peuvent être converties en false
:
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 un booléen. Pour convertir une valeur (ou une expression) en sa valeur booléenne correspondante, on pourra utiliser un double NON ou le constructeur Boolean
.
Exemples
Utiliser NON
Le code suivant illustre l'utilisation de l'opérateur !
pour le NON logique.
let n1 = !true; // !t renvoie false
let n2 = !false; // !f renvoie true
let n3 = !""; // !f renvoie true
let n4 = !"Cat"; // !t renvoie false
Double NON (!!
)
Il est possible d'utiliser deux opérateurs NON à la suite pour convertir n'importe quelle valeur en booléen selon qu'elle est truthy ou falsy.
Une conversion équivalente pourra être obtenue avec le constructeur Boolean
.
let n1 = !!true; // !!truthy renvoie true
let n2 = !!{}; // !!truthy renvoie true : tout objet est truthy
let n3 = !!new Boolean(false); // Attention, un objet Boolean est toujours truthy !
let n4 = !!false; // !!falsy renvoie false
let n5 = !!""; // !!falsy renvoie false
let 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 Language Specification # sec-logical-not-operator |
Compatibilité des navigateurs
BCD tables only load in the browser