gpt4 book ai didi

javascript - 为什么 try/catch block 中已定义的变量在同一函数范围内显示为未定义?

转载 作者:行者123 更新时间:2023-12-04 07:56:42 24 4
gpt4 key购买 nike

<分区>

此代码是我正在学习的 javascript 类(class)的一部分。这个练习是在我需要猜测输出的错误处理部分。

代码:

(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 block 中作为参数 err 传递。但是对于 varerr 变量会被覆盖。因此,5 不是记录错误,而是记录在第一个 console.log(err) 中。

但我无法弄清楚为什么第二个 console.log(err) 输出 undefined。据我所知,var 不是 block 范围的,因此,在同一函数范围内,我应该可以访问 err 变量。而且,由于提升,var 最初变得未定义。但是由于 try/catch block 是同步的 并且我在定义它之后记录变量,它不应该记录 5 吗? 因为 console.log(boo) 按预期返回了 10

是因为创建了与局部参数同名的变量吗?

注意:这是我关于 stackoverflow 的第一个问题。所以请原谅任何错误!

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com