请教一个问题

来源:2-6 选择题

weixin_慕的地5241954

2019-09-18 05:31:58

(2)整个代码的执行:

因为test函数中有声明的局部变量a,这种情况是不会沿着作用域去外面找的( 函数内如果声明了一个变量与全局的变量一样,就不会再使用全局的了。)

按照代码的执行顺序,alert(a)在前,var a在后,局部变量a还没有赋值,所以开始输出来的a是undefined。

既然alert(a)在前,var a在后,那意思就是函数内部也有预解析?或者说var a相当于test(a)里面的局部变量a?只是test(a)里面的a变量还没赋值

写回答

2回答

好帮手慕星星

2019-09-19

你好,

视频中是有讲解这种情况的哦:

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

如果忘记了可以再回顾下。解析机制的教辅资料也可以进行查看:

http://file.mukewang.com/class/assist/499/6616789/dwf9fsp0re/%E8%A7%A3%E6%9E%90%E6%9C%BA%E5%88%B6.pdf

祝学习愉快!

0

好帮手慕星星

2019-09-18

同学你好,

理解的没有问题,在函数被调用的时候,函数内部会先进行预解析,然后再从上到下执行代码。

预解析的时候a变量提升被赋值为undefined,所以开始弹出的值为undefined,被赋值后a的值是11 。

自己可以再测试理解下,祝学习愉快!

0
heixin_慕的地5241954
h 这个函数里面的预解析,课程里面没有说到啊,我觉得这个很重要啊,有相关资料吗?
h019-09-18
共1条回复

0 学习 · 14456 问题

查看课程