逻辑与赋值运算符(&&=)

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

试一试

语法

js
x &&= y

描述

逻辑 AND 赋值 短路,意味着 x &&= y 等效于 x && (x = y),除了表达式 x 只被评估一次。

如果左侧不是真值,则不会执行赋值,因为 逻辑 AND 运算符的短路。例如,以下内容不会抛出错误,尽管 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

示例

使用逻辑 AND 赋值

js
let x = 0;
let y = 1;

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

规范

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

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参见