为什么第一次alert(a)不是调用全局的a=111,而是调用局部的a=undefine,全局变量不是可以在局部调用的吗?

来源:2-6 选择题

慕虎1507818

2020-11-26 23:47:06

# 具体遇到的问题

# 报错信息的截图

# 相关课程内容截图
//climg.mukewang.com/595377b50001448503420247.jpg# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入代码,可通过选择【代码语言】突出显示

写回答

1回答

好帮手慕慕子

2020-11-27

同学你好,因为test函数中有声明局部变量a,这种情况是不会沿着作用域链去外面找的, 即:函数内如果声明了一个局部变量与全局变量同名,就不会再使用全局的了,如下图所示:

http://img.mukewang.com/climg/5fc06a1809d812e703010234.jpg

函数调用后,内部的变量或者函数也会进行预解析。即局部变量a会提前声明,默认赋值为undefined。预解析完毕,执行后面的代码,所以第一次弹出a的值为undefined。

祝学习愉快~

2

0 学习 · 14456 问题

查看课程