【问题标题】:Function parameter object destructuring results in undefined variables函数参数对象解构导致未定义变量
【发布时间】:2017-08-01 15:58:21
【问题描述】:

我正在运行 Node 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!

这是 Node 中的错误还是 ES6 的预期行为? ab 不应该在函数中定义吗?如果不是,为什么解构会产生取消定义基本属性名称的效果(a)?

有没有办法可以使用参数解构在函数中同时定义ab?我明确地试图避免手动解构它们。

【问题讨论】:

  • a 仅指定要从参数b 的哪个属性中获取。它没有作为参数定义或访问。如果要访问a,则必须在函数中自己提取b

标签: javascript ecmascript-6 destructuring


【解决方案1】:

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

这是预期的行为。因为{a: {b}} 没有将a 绑定为名称,所以它只是表示您要访问解构对象的a 属性。

您可以使用以下内容。

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

【讨论】:

  • 啊,太简单了!我什至没有想到这是一种可能性。谢谢!
猜你喜欢
  • 2014-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多