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.
expr1 &&= expr2
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
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;
let x = 0; let y = 1; x &&= 0; // 0 x &&= 1; // 0 y &&= 1; // 1 y &&= 0; // 0
|Logical Assignment Operators
The definition of 'Assignment operators' in that specification.
BCD tables only load in the browser