Logical AND assignment

The logical AND assignment (x &&= y) operator only assigns if x is truthy.


expr1 &&= expr2


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;


Using logical AND assignment

let x = 0;
let y = 1;

x &&= 0; // 0
x &&= 1; // 0
y &&= 1; // 1
y &&= 0; // 0


Browser compatibilityUpdate compatibility data on GitHub

Chrome Edge Firefox Internet Explorer Opera Safari
Logical AND assignment (x &&= y) 85 85 79 No No 14
Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
Logical AND assignment (x &&= y) 85 85 79 No 14 No
Logical AND assignment (x &&= y) No

See also

© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.