【问题标题】:How to destructure an object by assigning default value when value is already null当值已经为空时如何通过分配默认值来解构对象
【发布时间】:2020-12-21 14:39:25
【问题描述】:

给定的对象值可以是其中任何一个。

const obj = null
const obj = { param : null}
const obj = { param : {innerParam: 10}}

我想从 param const { param : {innerParam} ={}} =obj 中提取 innerParam 但它抛出错误无法解构“{}”的属性“innerParam”,因为它为空。在解构时将参数分配给默认对象是否有解决方案。

注意:我需要一个单行代码。我想避免做下面的操作

const { param  = {} } =obj;
const { innerParam } = param || {};

【问题讨论】:

    标签: javascript object ecmascript-6 destructuring


    【解决方案1】:
    const { innerParam } = (obj.param || {});
    

    您仍然需要检查是否定义了 innerParam。您还可以像这样添加默认值:

    const innerParam = ((obj.param || {}).innerParam) || "default";
    

    【讨论】:

      【解决方案2】:
      const { innerParam } = obj?.param
      

      【讨论】:

      • 这不是有效的原版 JS。
      • 其实这是有效的
      • 是的,就像 ES6 一样。但不像 JS5。现代浏览器可以使用它,但它不适用于旧版浏览器。此外,这是一个有问题的语法,因为它类似于三元运算符 ([cond] ? [if-true] : [if-false]) 并且可能被解释器误解。我不推荐这种语法。
      • 因为三元运算符问题。
      • @xurei 其实没有三元问题
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-30
      • 2018-05-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      相关资源
      最近更新 更多