← 返回首页
逻辑与赋值(&&=) - JavaScript | MDN

此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

逻辑与赋值(&&=)

基线 广泛可用

自 2020年9月 起,此特性已在主流浏览器中得到支持,可在大多数设备和浏览器版本中正常使用。

逻辑与赋值(x &&= y)运算仅在 x 为值时为其赋值。

本文内容

尝试一下

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

语法

js
expr1 &&= expr2

描述

逻辑与的短路运算意味着 x &&= y 与下式等价:

js
x && (x = y);

如果左操作数不为真值,则由于逻辑与运算符的短路运算,不进行赋值操作。例如,由于 x 为 const(常量),以下式子不会抛出错误:

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

也不会触发 setter 函数:

js
const x = { get value() { return 0; }, set value(v) { console.log("调用了 setter"); }, }; x.value &&= 2;

实际上,如果 x 不为真值,则根本不会对 y 求值。

js
const x = 0; x &&= console.log("y 进行了求值"); // 什么都不会输出

示例

使用逻辑与赋值

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

规范

规范
ECMAScript® 2027 Language Specification
# sec-assignment-operators

浏览器兼容性

启用 JavaScript 以查看此浏览器兼容性表。

参见