The logical NOT (
!
) operator (logical complement, negation) takes truth to falsity and vice versa. It is typically used with
布尔
(logical) values. When used with non-Boolean values, it returns
false
if its single operand can be converted to
true
; otherwise, returns
true
.
!expr
返回
false
if its single operand can be converted to
true
; otherwise, returns
true
.
If a value can be converted to
true
, the value is so-called
truthy
. If a value can be converted to
false
, the value is so-called
falsy
.
Examples of expressions that can be converted to false are:
null
;
NaN
;
0
;
""
or
''
or
``
);
undefined
.
Even though the
!
operator can be used with operands that are not Boolean values, it can still be considered a boolean operator since its return value can always be converted to a
boolean primitive
. To explicitly convert its return value (or any expression in general) to the corresponding boolean value, use a double
NOT operator
或
布尔
构造函数。
The following code shows examples of the
!
(logical NOT) operator.
n1 = !true // !t returns false n2 = !false // !f returns true n3 = !'' // !f returns true n4 = !'Cat' // !t returns false
!!
)
It is possible to use a couple of NOT operators in series to explicitly force the conversion of any value to the corresponding boolean primitive . The conversion is based on the "truthyness" or "falsyness" of the value (see truthy and falsy ).
The same conversion can be done through the
布尔
函数。
n1 = !!true // !!truthy returns true
n2 = !!{} // !!truthy returns true: any object is truthy...
n3 = !!(new Boolean(false)) // ...even Boolean objects with a false .valueOf()!
n4 = !!false // !!falsy returns false
n5 = !!"" // !!falsy returns false
n6 = !!Boolean(false) // !!falsy returns false
The following operation involving booleans :
!!bCondition
is always equal to:
bCondition
| 规范 |
|---|
|
ECMAScript (ECMA-262)
The definition of 'Logical NOT expression' in that specification. |
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Logical NOT (
!
)
|
Chrome 1 | Edge 12 | Firefox 1 | IE 3 | Opera 3 | Safari 1 | WebView Android 1 | Chrome Android 18 | Firefox Android 4 | Opera Android 10.1 | Safari iOS 1 | Samsung Internet Android 1.0 | nodejs 0.1.100 |
完整支持