第一个a为什么是underfined
来源:2-6 选择题
JJJustin
2019-07-23 14:55:25
预解析的时候确实两个a都是underfined 但是程序按顺序执行的时候 全局变量a应该是赋值了111,然后再调用test()();方法把,那第一个a不是弹111吗
3回答
同学你好,函数内是这么执行的哦,弹出a之后就声明了var a =11;这个上面也说过了哦,
但是函数外的话,也是按照顺序执行的,先声明var a =111;然后往下调用函数。
希望能帮助到你,祝学习愉快!
好帮手慕糖
2019-07-23
同学你好,是先执行test哦。先弹出的也是test中的。
1、test()(),这里先执行test(),是调用了test这个函数,然后执行函数中的内容。
2、弹出a(因为这个函数中有var声明的a变量,所以不会往test函数外找了,这个函数中的a有在弹出的下面。所以弹出undefined)。
3、然后有声明a=11,函数是在调用的时候执行的,这里没有调用,所以不执行,然后执行下面的返回值。
4、返回了subtest这个,然后刚刚的test()调用得到了subtest,后面还有一个括号,就成了subtest()即调用了这个函数。
4、执行subtest这个函数中的内容,弹出a,该函数中var声明的a,会往这个函数外找,找到了test下面的a,然后弹出11,
希望能帮助到你,欢迎采纳。
祝学习愉快!
好帮手慕糖
2019-07-23
同学你好,函数内,若是有使用var声明的同名变量,就不会在往上(函数外)找了哦。所以弹出的是函数内的预解析的undefined。
希望能帮助到你,祝学习愉快!
相似问题