Logical operators
Logical operators are typically used with Boolean (logical) values; when they are, they return a Boolean value. However, the &&
and ||
operators actually return the value of one of the specified operands, so if these operators are used with non-Boolean values, they may return a non-Boolean value. The logical operators are described in the following table.
Logical AND (&&
)
expr1 && expr2
Returns expr1
if it can be converted to false
; otherwise, returns expr2
. Thus, when used with Boolean values, &&
returns true
if both operands are true; otherwise, returns false
.
Logical OR (||
)
expr1 || expr2
Returns expr1
if it can be converted to true
; otherwise, returns expr2
. Thus, when used with Boolean values, ||
returns true
if either operand is true; if both are false, returns false
.
Logical NOT (!
)
!expr
Returns false
if its single operand that can be converted to true
; otherwise, returns true
.
Examples of expressions that can be converted to false
are those that evaluate to null, 0, NaN, the empty string (""), or undefined.
The following code shows examples of the &&
(logical AND) operator.
JSCopy to Clipboard
The following code shows examples of the || (logical OR) operator.
JSCopy to Clipboard
The following code shows examples of the ! (logical NOT) operator.
JSCopy to Clipboard
As logical expressions are evaluated left to right, they are tested for possible "short-circuit" evaluation using the following rules:
false && anything
is short-circuit evaluated to false.true || anything
is short-circuit evaluated to true.
The rules of logic guarantee that these evaluations are always correct. Note that the anything part of the above expressions is not evaluated, so any side effects of doing so do not take effect.
Note that for the second case, in modern code you can use the Nullish coalescing operator (??
) that works like ||
, but it only returns the second expression, when the first one is "nullish", i.e. null
or undefined
. It is thus the better alternative to provide defaults, when values like ''
or 0
are valid values for the first expression, too.
Last updated