【问题标题】:Optional chaining with assignment带赋值的可选链接
【发布时间】:2022-01-22 20:06:15
【问题描述】:

ES16+ 提供了一个很好的简写 obj.someMethod?.() 来调用 someMethod 如果存在于调用对象上。

被这种编码糖宠坏了,如果存在,我还想为属性分配一个值,例如obj?.someProp = 42(这会导致无效的左手赋值)。

我想对任何对象(主要是 HTMLElements 数据集)执行此操作。知道如何缩短这个吗?

if(obj?.hasOwnProperty("someProp")) obj.someProp = 42

【问题讨论】:

  • or || 操作符在这里可能会派上用场,取决于您使用该值的位置,例如:如果obj.someProp 为空或未定义,let var = obj.someProp || 42 var 将计算为 42

标签: javascript object properties


【解决方案1】:

您可以使用logical nullish assignment operator。不过,obj 未定义对您没有帮助:

if (obj) obj.someProp ??= 42;

【讨论】:

    【解决方案2】:

    好吧,你可以这样做:

    obj && (obj.someProp = 42)
    

    但这不会为您创建obj..

    然而,即使它没有被问到,为什么不只是简单地解构呢?

    obj = {...(obj || {}), someProp: 42}
    

    【讨论】:

      猜你喜欢
      • 2015-05-27
      • 2020-03-10
      • 1970-01-01
      • 2021-02-11
      • 1970-01-01
      • 2021-02-03
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多