javascript - 在传播语法 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()};
这不是(注意最后的分号)
解决方案
这与展开语法或分号无关。
对象解构赋值之前不带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());
推荐阅读
- verilog - 如何实现非连续采样点的过渡覆盖?
- image - Azure DevOps 配置文件图片未显示在板上
- android - 无法迁移到 Gradle DSL 插件,找不到“com.android.library”]
- c# - 如何在 .Net MVC 中使用 Array 的内容填充 DropDown?
- python - 如何使用 API 网关传递给 Cloud Function 的服务帐户的 JWT 在 Cloud Function 中初始化 Google BigQuery 客户端
- logging - 如何在我的 apache2 日志中输出消息的 LogLevel
- python - 从python中的数据框列创建数组-迭代时出错
- javascript - 从 Web 响应中搜索和提取值
- capacitor - 从 Capacitor Java 调用 javascript 函数
- c# - 有没有办法确定一个变量可能是所有可能的类型?