Javascript 函数参数对象分解会导致未定义的变量
我正在运行Node v6.6.0,它支持分解函数参数:Javascript 函数参数对象分解会导致未定义的变量,javascript,ecmascript-6,destructuring,Javascript,Ecmascript 6,Destructuring,我正在运行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! 这是节点中的错误还是ES6的预期行为?函数中不应该同时定义a和b吗?如果不是,为什么
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和b?我明确地试图避免手动分解它们
这是节点中的错误还是ES6的预期行为
这是预期的行为。因为{a:{b}}没有将a绑定为名称,所以它只表示您希望访问已解构对象的属性
您可以使用以下命令
函数foo{a,a:{b}{
返回[a,b]
}
console.logfoo{a:{b:123}
这是节点中的错误还是ES6的预期行为
这是预期的行为。因为{a:{b}}没有将a绑定为名称,所以它只表示您希望访问已解构对象的属性
您可以使用以下命令
函数foo{a,a:{b}{
返回[a,b]
}
logfoo{a:{b:123}}a仅仅指定参数b的哪个属性是从中获取的。它不作为参数定义或访问。如果你想访问a,你必须自己在函数中提取b。a只是指定参数b的属性。它不作为参数定义或访问。如果你想访问a,你必须在函数中自己提取b。啊,太简单了!我甚至没有想到这是可能的。谢谢啊,太简单了!我甚至没有想到这是可能的。谢谢