首页 > 解决方案 > 在传播语法 jn javascript 后使用分号会中断执行并出现错误“意外令牌 =”

问题描述

有人可以解释一下为什么

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()};

这不是(注意最后的分号)

标签: javascriptspread-syntax

解决方案


这与展开语法或分号无关。

对象解构赋值之前不带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());

推荐阅读