--- title: Logical AND assignment (&&=) slug: Web/JavaScript/Reference/Operators/Logical_AND_assignment translation_of: Web/JavaScript/Reference/Operators/Logical_AND_assignment ---
{{jsSidebar("Operators")}}

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

{{EmbedInteractiveExample("pages/js/expressions-logical-and-assignment.html")}}

语法

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

规范

Specification
{{SpecName('Logical Assignment', '#sec-assignment-operators', 'Assignment operators')}}

浏览器兼容性

{{Compat("javascript.operators.logical_and_assignment")}}

参见