JavaScript的自执行匿名函数中的这个问题是什么?
假设这是一个示例代码段,我们需要告诉该代码段可能的输出并为其提供解释
var name = 'Zakir';
(() => {
name = 'Rahul';
return;
console.log(name);
function name(){
let lastName = 'Singh';
}
})();
console.log(name);让我们以幼稚的方式逐一解决这个问题
1→'Zakir'存储在变量名中
3→我们进入一个自执行的匿名函数
4→变量名称重新初始化为“Rahul”
5→遇到return语句,所以我们退出函数
15→将名称变量打印到当前值为“Rahul”的屏幕上
因此,最终输出将是
Rahul
但是,不幸的是,这是错误的,让我们再次遍历代码以查看出错的地方,这一次牢记了变量和函数的概念。
1→'Zakir'存储在变量名中
3→我们进入一个自执行的匿名函数
当我们进入函数时,函数将进行提升,并且将name()在自执行函数底部定义的函数提升到自执行函数的最顶部,并且在该中间状态下,代码将类似于-
示例
let name = 'Zakir';
(() => {
let name;
name = 'Rahul';
return;
console.log(name);
name = function(){
let lastName = 'Singh';
}
})();
console.log(name);请注意,只要将变量/函数提升到其作用域的顶部,就只会对其进行定义和初始化,并会在其实际位置对其进行初始化,而在顶部则是未定义的,但是它存在。
因此,当变量名被重新初始化时,是局部变量名被重新初始化,而不是全局变量,因此,在此之后,我们退出自执行函数,并将全局变量名打印到控制台,该控制台仍然保存着“Zakir”。因此,输出将是-
输出结果
Zakir
热门推荐
10 朋友新年祝福语大全 简短
11 新年祝福语简短大方兔年
12 搬新家礼物祝福语简短
13 同学见面花束祝福语简短
14 五一假期祝福语幽默简短
15 离职欢送敬酒祝福语简短
16 对学弟的祝福语简短
17 考老师辞职祝福语简短
18 祝福语驱散霉运的话简短