【问题标题】:Why destructuring assignment doesn't know null value as falsy and use default value? [duplicate]为什么解构赋值不知道空值是假的并使用默认值? [复制]
【发布时间】:2017-05-23 15:14:00
【问题描述】:

假设我们有一个函数在参数的内部对象中使用一些键:

const api = ({ data: { name } = {} }) =>
  `My name is ${name}.`;

如果我们将{}{ data: '' }{ data: 0 }{ data: NaN }{ data: undefined } 传递给我们将看到的函数:

'My name is undefined.'

并且不会看到任何错误,因为解构赋值会看到 data 是虚假的并使用 = {} 而不是 name 将是 undefined

问题当我们将null 传递给数据键时,为什么解构赋值返回错误?

api({ data: null });

// ==> Uncaught TypeError: Cannot destructure property 'name' of '{}' as it is null.

【问题讨论】:

    标签: javascript destructuring object-destructuring falsy


    【解决方案1】:

    根据MDN docs关于对象解构中的默认值:

    可以为变量分配默认值,如果值 从对象中拉出是未定义的。

    【讨论】:

    • 谢谢亲爱的 Bartek,我终于明白了。
    猜你喜欢
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 2020-01-11
    • 2019-05-11
    • 1970-01-01
    相关资源
    最近更新 更多