如何理解 try catch 延长了作用域链?

看了下js高程,第四章说到
with语句和 try catch 都可以延长作用域链,
with比较好理解,而且一般有性能问题,也不推荐用。
那这个try catch 是捕获Error对象的时候 会新开一个作用域吗?
还是说 catch的大括号内就是一个能访问到error对象的块级作用域?

阅读 8.6k
3 个回答

try中的代码捕获到错误以后,会把异常对象推入一个可变对象并置于用域的头部,在catch代码块内部,函数的所有局部变量将会被放在第二个作用域对象中,catch中的代码执行完,会立即销毁当前作用域。

看了一下书,我理解为和with一样的原理,即增加了大括号内代码可访问的变量,在try catch中是error对象

try-catch在使用时的花括号会创建一个局部作用域,自然延长了作用域链,这个局部作用域会在语句执行之后自动销毁。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题