Деструктуризация объекта по умолчанию с использованием других неструктурированных значений
Следуйте работает в узле v8.11.4
и в вавилон перевел JavaScript, работающий на 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, который говорит, что это поддерживается, ни в официальной спецификации ECMAScript 2015
1 ответ
Да, это действительный код ES2015. aryOfObjs
переменная, введенная в область действия функции, и Object.assign({}, ...aryOfObjs)
является выражением, вычисленным в этой области, поэтому оно может получить доступ к любой из этих переменных. Единственный раз, когда это будет ошибка, если они были недоступны, как
const myFunc = ({
combindedObj = Object.assign({}, ...aryOfObjs),
aryOfObjs,
}) => console.log(combindedObj);
который выдает ошибку, потому что aryOfObjs
еще не был инициализирован.