Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数参数对象分解会导致未定义的变量_Javascript_Ecmascript 6_Destructuring - Fatal编程技术网

Javascript 函数参数对象分解会导致未定义的变量

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吗?如果不是,为什么

我正在运行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吗?如果不是,为什么分解会产生取消定义基本属性名称的效果

是否有一种方法可以使用参数分解在函数中同时定义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。啊,太简单了!我甚至没有想到这是可能的。谢谢啊,太简单了!我甚至没有想到这是可能的。谢谢