函数参数的解构

Destructuring in function parameters

假设我们有这样的功能:

const func = (a, b, {c: {d}}) => {console.dir(c)}

这个函数应该怎么调用,第三个参数是什么结构? 我尝试了很多变体,但总是出现错误:Cannot destructure propertydof 'undefined' or 'null'.

谢谢!

举个例子。

const func = (a, b, {c: {d}}) => {console.dir(c)},
    c = { d: 'hello' }

func(1, 2, { c })

我将 c 定义为一个带有 属性 d 的对象,它是一个字符串 'hello'。

调用 func 时,我传递给函数的第三个参数是一个带有 属性 c.

的对象

{ c } 是 { c: c }

的 shorthand

const func = (a, b, {c: {d}}) => {console.dir(d)}
func(null, null, {c: {d: document.location}});

必须使用具有键 c 的对象调用此函数,该对象具有键 d 作为值的对象:

func(a, b, {c: {d: document.location }}) 

console.dir() 接受任何 JS 对象作为参数。

{ c: {d}} 是一种称为对象解构的语法,其在此上下文中的目的是从作为函数参数传递的对象中解包字段。

{d} 是具有键 d 和变量值 d 的对象的较短语法({d: d})。

要从键 c 下的对象解压变量 d,该对象必须初始化该键!但是当你进一步解构作为参数传递的对象时,你不会将该对象作为范围中的变量。

在您提供的示例中,您将无法访问对象 c,因为它已被解构,只有对象 d 可用。要么你的代码有误,要么你需要类似 Anurat Chapanond 发布的东西。