--- title: NON logique (!) slug: Web/JavaScript/Reference/Operators/Logical_NOT tags: - JavaScript - Language feature - Logical Operator - Operator - Reference browser-compat: javascript.operators.logical_not translation-of: Web/JavaScript/Reference/Operators/Logical_NOT ---
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.
!expr
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
;""
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
.
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
!!
)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
L'expression qui suit, utilisée avec des booléens :
!!bCondition
est toujours égale à :
bCondition
{{Specifications}}
{{Compat}}