Web/JavaScript/Reference/Operators/Logical AND assignment
The logical AND assignment (x &&= y
) operator only assigns if x
is truthy.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Syntax
expr1 &&= expr2
Description
Short-circuit evaluation
The logical AND operator is evaluated left to right, it is tested for possible short-circuit evaluation using the following rule:
(some falsy expression) && expr
is short-circuit evaluated to the falsy expression;
Short circuit means that the expr
part above is not evaluated, hence any side effects of doing so do not take effect (e.g., if expr
is a function call, the calling never takes place).
Logical AND assignment short-circuits as well meaning that x &&= y
is equivalent to:
x && (x = y);
And not equivalent to the following which would always perform an assignment:
x = x && y;
Examples
Using logical AND assignment
let x = 0;
let y = 1;
x &&= 0; // 0
x &&= 1; // 0
y &&= 1; // 1
y &&= 0; // 0
Specifications
Specification |
---|
Logical Assignment OperatorsThe definition of 'Assignment operators' in that specification. |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
Desktop | Mobile | Server | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Logical AND assignment (x &&= y )
|
Chrome
Full support 85 |
Edge
Full support 85 |
Firefox
Full support 79 |
IE
No support No |
Opera
No support No |
Safari
Full support 14 |
WebView Android
Full support 85 |
Chrome Android
Full support 85 |
Firefox Android
Full support 79 |
Opera Android
No support No |
Safari iOS
Full support 14 |
Samsung Internet Android
No support No |
nodejs
No support No |
Legend
- Full support
- Full support
- No support
- No support
See also
- Logical AND (&&)
- The nullish coalescing operator (
??
) - Bitwise AND assignment (
&=
) Boolean
- Truthy
- Falsy
Logical AND assignment (&&=) by Mozilla Contributors is licensed under CC-BY-SA 2.5.