Logical nullish assignment (??=) - JavaScript 编辑
The logical nullish assignment (x ??= y
) operator only assigns if x
is nullish (null
or undefined
).
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.Syntax
expr1 ??= expr2
Description
Short-circuit evaluation
The nullish coalescing operator is evaluated left to right, it is tested for possible short-circuit evaluation using the following rule:
(some expression that is neither null nor undefined) ?? expr
is short-circuit evaluated to the left-hand side expression if the left-hand side proves to be neither null
nor undefined
.
Short circuit means that the expr
part above is not evaluated, hence any side effects of doing so do not take effect (e.g., if expr
is a function call, the calling never takes place).
Logical nullish assignment short-circuits as well meaning that x ??= y
is equivalent to:
x ?? (x = y);
And not equivalent to the following which would always perform an assignment:
x = x ?? y;
Examples
Using logical nullish assignment
function config(options) {
options.duration ??= 100;
options.speed ??= 25;
return options;
}
config({ duration: 125 }); // { duration: 125, speed: 25 }
config({}); // { duration: 100, speed: 25 }
Specifications
Specification |
---|
Logical Assignment Operators The definition of 'Assignment operators' in that specification. |
Browser compatibility
BCD tables only load in the browser
See also
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论