0

以下适用于节点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上找不到任何明确的说明,也没有在官方ECMAScript 2015 规范上

4

1 回答 1

2

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

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

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

于 2018-10-22T00:43:09.973 回答