Это не имеет ничего общего с синтаксисом расширения или точками с запятой.
Назначениям деструктуризации объектов, которым не предшествует что-то вроде var
, const
или let
, должны использоваться скобки (или в некоторых другихпроисходит как выражение внутри более крупного оператора, содержащего его), потому что в противном случае JS будет анализировать открывающую фигурную скобку как начало блока:
const getabc = ()=>({a:'aa',b:'bb',c:123});
let a, b, c;
({ a, b, c } = {...getabc()});
В то же время здесь нет смысла использовать синтаксис разброса, поэтому вы можете удалить это:
const getabc = ()=>({a:'aa',b:'bb',c:123});
let a, b, c;
({ a, b, c } = getabc());