--- title: Logical AND assignment (&&=) slug: Web/JavaScript/Reference/Operators/Logical_AND_assignment translation_of: Web/JavaScript/Reference/Operators/Logical_AND_assignment ---
The logical AND assignment (x &&= y
) operator only assigns if x
is {{Glossary("truthy")}}.
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 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;
let x = 0; let y = 1; x &&= 0; // 0 x &&= 1; // 0 y &&= 1; // 1 y &&= 0; // 0
Specification |
---|
{{SpecName('Logical Assignment', '#sec-assignment-operators', 'Assignment operators')}} |
{{Compat("javascript.operators.logical_and_assignment")}}
??
)&=
)