为什么第一次alert(a)不是调用全局的a=111,而是调用局部的a=undefine,全局变量不是可以在局部调用的吗?
来源:2-6 选择题
慕虎1507818
2020-11-26 23:47:06
# 具体遇到的问题
# 报错信息的截图
# 相关课程内容截图# 尝试过的解决思路和结果
# 粘贴全部相关代码,切记添加代码注释(请勿截图)
在这里输入代码,可通过选择【代码语言】突出显示
1回答
好帮手慕慕子
2020-11-27
同学你好,因为test函数中有声明局部变量a,这种情况是不会沿着作用域链去外面找的, 即:函数内如果声明了一个局部变量与全局变量同名,就不会再使用全局的了,如下图所示:
而函数调用后,内部的变量或者函数也会进行预解析。即局部变量a会提前声明,默认赋值为undefined。预解析完毕,执行后面的代码,所以第一次弹出a的值为undefined。
祝学习愉快~
相似问题