有人可以解释一下为什么
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()};
这不是(请注意最后的分号)
最佳答案
这与传播语法或分号无关。
未使用var
,const
或let
之类的对象进行的对象分解分配必须使用括号(或以其他方式在包含它的较大语句中以表达式的形式出现),因为否则JS将解析左括号作为a的开头。块:
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());
关于javascript - 在JavaScript中传播语法后使用分号会中断执行,并显示错误 “Unexpected token =”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51003328/