我正在运行Node 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!
这是Node中的错误还是这是ES6的预期行为?不应该在函数中定义a
和b
吗?如果没有,为什么解构具有取消定义基本属性名称(a
)的效果?
有没有办法使用参数解构来同时在函数中定义a
和b
?我明确地试图避免手动解构它们。
答案 0 :(得分:4)
这是Node中的错误,还是这是ES6的预期行为?
这是预期的行为。由于{a: {b}}
没有将a
绑定为名称,因此它只表示您要访问解构对象的a
属性。
您可以使用以下内容。
function foo ({ a, a: {b} }) {
return [a, b]
}
console.log(foo({ a: { b: 123 }}))