逻辑或赋值运算符 (||=)
**逻辑或赋值 (||=
)** 运算符仅评估右操作数,并在左操作数为假值时将其赋值给左操作数。
试一试
语法
js
x ||= y
描述
逻辑或赋值短路,这意味着x ||= y
等效于x || (x = y)
,除了表达式x
只会被评估一次。
如果左侧不是假值,则不会执行赋值,因为逻辑或运算符会短路。例如,以下代码不会抛出错误,尽管x
是const
js
const x = 1;
x ||= 2;
以下代码也不会触发setter
js
const x = {
get value() {
return 1;
},
set value(v) {
console.log("Setter called");
},
};
x.value ||= 2;
事实上,如果x
不是假值,则根本不会评估y
。
js
const x = 1;
x ||= console.log("y evaluated");
// Logs nothing
示例
设置默认内容
规范
规范 |
---|
ECMAScript语言规范 # sec-assignment-operators |
浏览器兼容性
BCD表格仅在启用JavaScript的浏览器中加载。