逻辑与赋值运算符(&&=)
逻辑 AND 赋值 (&&=
) 运算符仅在左侧操作数为 真值 时才评估右侧操作数并将赋值给左侧。
试一试
语法
js
x &&= y
描述
逻辑 AND 赋值 短路,意味着 x &&= y
等效于 x && (x = y)
,除了表达式 x
只被评估一次。
如果左侧不是真值,则不会执行赋值,因为 逻辑 AND 运算符的短路。例如,以下内容不会抛出错误,尽管 x
是 const
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 表格仅在浏览器中加载