逻辑与赋值 (&&=)

Baseline 已广泛支持

此功能已成熟,并可在许多设备和浏览器版本上使用。自 2020 年 9 月起,所有浏览器均已提供此功能。

逻辑与赋值运算符 (&&=) 仅在左操作数为真值时才评估右操作数并将其赋值给左操作数。

试一试

let a = 1;
let b = 0;

a &&= 2;
console.log(a);
// Expected output: 2

b &&= 2;
console.log(b);
// Expected output: 0

语法

js
x &&= y

描述

逻辑与赋值运算符会短路,这意味着 x &&= y 等价于 x && (x = y),不同之处在于表达式 x 只会被评估一次。

由于逻辑与运算符的短路特性,如果左操作数不是真值,则不会执行任何赋值。例如,即使 xconst,以下代码也不会抛出错误:

js
const x = 0;
x &&= 2;

以下代码也不会触发 setter

js
const x = {
  get value() {
    return 0;
  },
  set value(v) {
    console.log("Setter called");
  },
};

x.value &&= 2;

事实上,如果 x 不是真值,那么 y 根本不会被评估。

js
const x = 0;
x &&= console.log("y evaluated");
// Logs nothing

示例

使用逻辑与赋值运算符

js
let x = 0;
let y = 1;

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

规范

规范
ECMAScript® 2026 语言规范
# sec-assignment-operators

浏览器兼容性

另见