在javascript中,是否可以在处理异常的同时执行对象破坏?例如,这是我希望能够使语法无效的原因
let body;
let err;
try {
{ body } = await networkRequest(...); // invalid syntax
} catch (e) {
err = e;
}
据我所知,选项是:
不要使用对象解构
不处理异常
范围被破坏到try块
是否可以实现对象解构并处理异常?
答案 0 :(得分:6)
你得到一个解析错误,因为没有声明,对象结构分配看起来像是左边的一个块,ES2015规范说它必须被解析为一个块。
您可以通过括号括起来解决这个问题,以便引擎知道它是一个表达式:
let body;
let err;
try {
({ body } = { body: 'test' })
} catch (e) {
err = e;
}
console.log(body);

您可以阅读这个确切的问题here。
在使用没有声明的对象文字解构赋值时,赋值语句周围的圆括号(...)是必需的语法。