[英]Destructuring in function parameters
假設我們具有這樣的功能:
const func = (a, b, {c: {d}}) => {console.dir(c)}
該函數應如何調用以及第三個參數的結構? 我嘗試了很多變體,但始終遇到錯誤: Cannot destructure property
of 'undefined' or 'null'.
Cannot destructure property
d of 'undefined' or 'null'.
謝謝!
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)},
c = { d: 'hello' }
func(1, 2, { c })
我將c定義為具有屬性d(字符串“ hello”)的對象。
當調用func時,我傳遞給函數的第三個參數是具有屬性c的對象。
{c}是{c:c}的簡寫
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.