对象解构和处理异常

时间:2018-05-03 22:14:42

标签: javascript ecmascript-6

在javascript中,是否可以在处理异常的同时执行对象破坏?例如,这是我希望能够使语法无效的原因

let body;
let err;

try {
  { body } = await networkRequest(...); // invalid syntax
} catch (e) {
  err = e;
}

据我所知,选项是:

  1. 不要使用对象解构

  2. 不处理异常

  3. 范围被破坏到try块

  4. 是否可以实现对象解构并处理异常?

1 个答案:

答案 0 :(得分:6)

你得到一个解析错误,因为没有声明,对象结构分配看起来像是左边的一个块,ES2015规范说它必须被解析为一个块。

您可以通过括号括起来解决这个问题,以便引擎知道它是一个表达式:



let body;
let err;

try {
  ({ body } = { body: 'test' })
} catch (e) {
  err = e;
}
console.log(body);




您可以阅读这个确切的问题here

  

在使用没有声明的对象文字解构赋值时,赋值语句周围的圆括号(...)是必需的语法。