1

例如我有一个这样的对象:

const a = {
 b: "value"
 // and also what about: c: '', or c: 0, c: false ?
};

而且我想为我的对象分配一个'c'键,但前提是它之前没有分配。

通常我们会这样做:

if (!a.c) {
  a.c = 1; // or without { } for a bit shorty way.
}

但是 ES12 标准引入了更多新的 Nullish 合并和逻辑运算符,所以有人可以向我解释一下它如何帮助我替换上面的示例null以及0作为数字行为(空字符串和false行为也是一个加号)?

其背后的真正问题是:使用这个新功能真的可以覆盖所有情况并在实际生产项目中取代上面的示例,还是保持更传统的方式更好。(当然,这都是关于语法糖的工作人员,但我想了解更多关于覆盖范围的信息)

4

1 回答 1

6

仅当左侧的值为或时,逻辑无效赋值??=才分配该值。undefinednull

a.c ??= 1;

如果您想替换任何虚假值,例如'', 0, false, null, undefined, 您可以采用逻辑 OR 赋值||=

a.c ||= 1;
于 2021-11-22T09:15:34.533 回答