【问题标题】:ES12: Nullish coalescing operators & objectsES12:空值合并运算符和对象
【发布时间】:2021-11-22 09:10:23
【问题描述】:

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

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 合并和逻辑运算符,所以有人可以向我解释一下它如何帮助我替换上面的示例以及 null0 作为数字行为(空字符串和false 的行为也是加分项)?

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

【问题讨论】:

  • 要替换零吗?
  • 你不是说if (!a.c)吗?
  • 你好@NinaScholz,我通过回答我的其他问题来记住你。老实说,我也希望涵盖零和null 案例。
  • 那么false 和空字符串...等
  • @C.Champagne,是的,没错,这是我的错误

标签: javascript node.js ecmascript-2021


【解决方案1】:

仅当左侧的值为undefinednull 时,logical nullish assignment ??= 才分配该值。

a.c ??= 1;

如果您想替换任何falsy 值,例如''0falsenullundefined,您可以使用logical OR assignment ||=

a.c ||= 1;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 2017-09-04
    • 2011-02-13
    • 2012-09-19
    • 2010-10-13
    • 2018-05-24
    • 2021-08-29
    相关资源
    最近更新 更多