【发布时间】:2021-03-16 23:24:36
【问题描述】:
这段代码是我正在做的 javascript 课程的一部分。而这个练习是在我需要猜测输出的错误处理部分。
代码:
(function () {
try {
throw new Error();
} catch (err) {
var err = 5; //creating another local err variable
var boo = 10;
console.log(err);
}
console.log(err);
console.log(boo);
})();
输出:
5
undefined //I don't understand this part
10
错误在 catch 块中作为参数 err 传递。但是使用var,err 变量会被覆盖。因此,5 不会记录错误,而是记录在第一个 console.log(err) 中。
但我不明白为什么第二个console.log(err) 输出undefined。据我了解,var 不是块作用域,因此,在同一个函数作用域内,我应该可以访问 err 变量。而且,由于提升,var 最初变得未定义。但是由于try/catch 块是同步,并且我在定义变量后记录变量,不应该记录5吗?因为console.log(boo) 返回10 为预计。
是不是因为创建了与本地参数同名的变量?
注意:这是我关于 stackoverflow 的第一个问题。所以请原谅任何错误!
【问题讨论】:
-
catch 异常变量只在 catch 块内可用:这个:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
快速谷歌搜索得到this。读到头疼。
-
我不知道规范帽子的位置,哪里有alternatives 可以在需要时选择。也许我也只是误解了我正在阅读的内容。
-
请考虑:What should I do when someone answers my question? - Alex D 的答案是正确的,你应该接受这个答案。
标签: javascript error-handling try-catch undefined