功能参数对象解构导致不确定的变量
问题描述:
我正在节点V6.6.0,这对解构函数参数支持:功能参数对象解构导致不确定的变量
function foo ({ a: { b }}) {
// stuff
}
假设我想解构和访问这两个a
和b
。可悲的是以下不似乎工作:
function foo ({ a: { b }}) {
return [a, b]
}
foo({ a: { b: 123 }})
// ReferenceError: a is not defined!
这是错误的节点或这是ES6预期的行为?功能中是否应该定义a
和b
?如果不是,为什么解构会导致取消定义基本属性名称(a
)?
有没有办法我可以使用参数解构得到a
和b
在函数中定义?我明确地试图避免手动解构它们。
答
Node中是这个错误还是这是ES6的预期行为?
这是预期的行为。因为{a: {b}}
不会绑定a
作为名称,它只是表示要访问解构结构对象的a
属性。
您可以使用以下内容。
function foo ({ a, a: {b} }) {
return [a, b]
}
console.log(foo({ a: { b: 123 }}))
+0
啊,太简单了!这甚至没有把我想象为一种可能性。谢谢! – GladstoneKeep
'了'只是指定参数'B'是从采取什么财产。它不作为参数定义或访问。如果你想访问'a',你将不得不在函数中提取'b'。 – 2017-08-01 16:05:17