函数参数的解构
Destructuring in function parameters
假设我们有这样的功能:
const func = (a, b, {c: {d}}) => {console.dir(c)}
这个函数应该怎么调用,第三个参数是什么结构?
我尝试了很多变体,但总是出现错误:Cannot destructure property
dof '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 发布的东西。
假设我们有这样的功能:
const func = (a, b, {c: {d}}) => {console.dir(c)}
这个函数应该怎么调用,第三个参数是什么结构?
我尝试了很多变体,但总是出现错误:Cannot destructure property
dof '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 }
的 shorthandconst 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 发布的东西。