使用其他解构值的对象解构默认值

Object destructuring default using other destructured values

以下在节点 v8.11.4 和 babel 中运行 JavaScript 运行 on chrome

const myFunc = ({
  aryOfObjs,
  combinedObj = Object.assign({}, ...aryOfObjs),
}) => console.log(combinedObj);
myFunc({
  aryOfObjs: [
    { foo: 'bar'},
    { biz: 'baz' },
  ]
}); // => { foo: 'bar', biz: 'baz' }

在 EMACScript 2015 中,这是否保证如上所示工作?

我知道 node 和 babel 不是 100% EMACScript 2015 投诉,但我相信它们都实现了对象解构规范我在 mdn that says this is supported nor on the official ECMAScript 2015 spec

上找不到任何明确的内容

是的,这是有效的 ES2015 代码。 aryOfObjs 是引入函数范围的变量,Object.assign({}, ...aryOfObjs) 是在该范围内计算的表达式,因此它可以访问任何这些变量。唯一会出现错误的情况是它们被乱序访问,例如

const myFunc = ({
  combindedObj = Object.assign({}, ...aryOfObjs),
  aryOfObjs,
}) => console.log(combindedObj);

这会引发错误,因为 aryOfObjs 尚未初始化。