小编the*_*v19的帖子

为什么“错误”变量重新分配的功能范围不在 catch{} 块内?

我正在使用 JavaScript 中的 try-catch 块,并且遇到了一些我不完全理解的变量作用域行为。

我知道console.log(boo)打印20到控制台是因为变量已经用var关键字声明了,因此它是功能范围的(即不是块范围到 catch 块)。

但是,我不明白为什么err变量的范围也不与变量相同boo。因此我不明白为什么它undefined在 catch 块之外。

(function() {
  try {
    throw new Error();
  } catch (err) {
    var err = 10;
    var boo = 20;
    console.log(err); //'10' (as I expect)
  }
  // Why doesn’t this log '10' ???
  console.log(err); // 'undefined' (but I expected '10')

  console.log(boo); // '20' (as I expect)
})();
Run Code Online (Sandbox Code Playgroud)

javascript error-handling scope var try-catch

3
推荐指数
2
解决办法
228
查看次数

标签 统计

error-handling ×1

javascript ×1

scope ×1

try-catch ×1

var ×1