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

时间:2018-10-22 00:40:31

标签: ecmascript-6 object-destructuring

以下操作在节点v8.11.4和在chrome上运行的babel转译JavaScript中有效

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上找不到任何明确表示支持或官方{{ 3}}

1 个答案:

答案 0 :(得分:2)

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

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

由于aryOfObjs尚未初始化,将引发错误。