逻辑与赋值(&&=)
逻辑与赋值(x &&= y
)运算仅在 x
为真值时为其赋值。
尝试一下
语法
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
规范
Specification |
---|
ECMAScript Language Specification # sec-assignment-operators |
浏览器兼容性
BCD tables only load in the browser