簡體   English   中英

功能參數解構

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM