This question already has answers here:
object destructuring without var

(3个答案)


2年前关闭。




在javascript中,是否仍可以在处理异常的同时执行对象销毁?例如,这是我理想地希望能够执行的语法无效的内容
let body;
let err;

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

从我可以看出的选择是:
  • 不要使用对象分解
  • 不处理异常
  • 将销毁范围缩小到try块

  • 是否可以实现对象分解并处理异常?

    最佳答案

    您会收到一个解析错误,因为没有声明,对象分解结构分配看起来像是左侧的一个块,而ES2015规范说必须将其解析为一个块。

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

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


    您可以阅读有关此确切问题here的信息。

    09-16 16:55