功能参数对象解构导致不确定的变量

问题描述:

我正在节点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

Node中是这个错误还是这是ES6的预期行为?

这是预期的行为。因为{a: {b}}不会绑定a作为名称,它只是表示要访问解构结构对象的a属性。

您可以使用以下内容。

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

+0

啊,太简单了!这甚至没有把我想象为一种可能性。谢谢! – GladstoneKeep