Javascript 函数参数的解构

Javascript 函数参数的解构,javascript,ecmascript-6,destructuring,Javascript,Ecmascript 6,Destructuring,假设我们有这样的功能: const func = (a, b, {c: {d}}) => {console.dir(c)} 这个函数应该如何调用,第三个参数的结构是什么? 我尝试了很多变体,但总是出现一个错误:无法对'undefined'或'null'的属性进行解构。 谢谢 这里有一个例子 const func = (a, b, {c: {d}}) => {console.dir(c)}, c = { d: 'hello' } func(1, 2, { c }) 我将c

假设我们有这样的功能:

const func = (a, b, {c: {d}}) => {console.dir(c)}
这个函数应该如何调用,第三个参数的结构是什么? 我尝试了很多变体,但总是出现一个错误:
无法对'undefined'或'null'的属性进行解构。

谢谢

这里有一个例子

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

func(1, 2, { c })
我将c定义为一个具有属性d的对象,属性d是字符串“hello”

调用func时,我传递给函数的第三个参数是一个属性为c的对象

{c}是{c:c}的缩写

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

func(null,null,{c:{d:document.location})
func(“a”,“b”,“c:{d:{d}”)请向我们展示您尝试的变体。您可能希望将该代码粘贴到一个transpiler(例如)中,以查看其功能的ES5版本。您的意思是
console.dir(d)
?代码中没有声明
c
变量。没错。我刚刚意识到在我的应答控制台中,dir(c)通过闭包访问变量c。更有可能的是,DefLee打算调用console.dir(d)@AnuratChapanond这个console.log(c)实际上让我有点困惑。出于某些原因,我认为解构也会将属性“c”作为函数参数(因为它将整个对象作为第三个参数)@AndrzejSmyk我想对你的答案进行投票,但由于我的声誉,我不能投票)谢谢你的回答。还有一个需要澄清的问题:当我们在函数参数声明中指定“{c:{d}”时,换句话说,我们希望获取属性“d”,并将其内容存储到函数变量“d”中?您的答案也是有效的。但我感兴趣的是从参数中得到“c”,而不是从外部范围。现在我明白了,我不可能按照我的方式去做,我同意。如果将函数参数声明为func=(a,b,{c})=>{console.dir(c)},则还可以从参数中获取c