# 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
``````

## 规范

Specification
Logical Assignment Operators
Assignment operators

## 浏览器兼容性

BCD tables only load in the browser