2017-08-01 77 views
1

我正在節點V6.6.0,這對解構函數參數支持:功能參數對象解構導致不確定的變量

function foo ({ a: { b }}) { 
    // stuff 
} 

假設我想解構和訪問這兩個ab。可悲的是以下似乎工作:

function foo ({ a: { b }}) { 
    return [a, b] 
} 
foo({ a: { b: 123 }}) 
// ReferenceError: a is not defined! 

這是錯誤的節點或這是ES6預期的行爲?功能中是否應該定義ab?如果不是,爲什麼解構會導致取消定義基本屬性名稱(a)?

有沒有辦法我可以使用參數解構得到ab在函數中定義?我明確地試圖避免手動解構它們。

+0

'了'只是指定參數'B'是從採取什麼財產。它不作爲參數定義或訪問。如果你想訪問'a',你將不得不在函數中提取'b'。 – 2017-08-01 16:05:17

回答

4

Node中是這個錯誤還是這是ES6的預期行爲?

這是預期的行爲。因爲{a: {b}}不會綁定a作爲名稱,它只是表示要訪問解構結構對象的a屬性。

您可以使用以下內容。

function foo ({ a, a: {b} }) { 
 
    return [a, b] 
 
} 
 
console.log(foo({ a: { b: 123 }}))

+0

啊,太簡單了!這甚至沒有把我想象爲一種可能性。謝謝! – GladstoneKeep