3

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

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

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

'My name is undefined.'

并且不会看到任何错误,因为解构赋值看到datais falsy 并使用 = {}而不是namewill be undefined

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

api({ data: null });

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

1 回答 1

5

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

如果从对象中提取的值未定义,则可以为变量分配默认值。

于 2017-05-23T15:19:37.587 回答