# 具体遇到的问题老师你好, 下面给出的代码中,第一个console打印出来的是undefined, 第二个是2, 能讲一下代码的执行顺序吗? # 粘贴全部相关代码,切记添加代码注释(请勿截图)
var a = 1; function fn() { console.log(a); var a = 2; console.log(a); }; fn();
登陆购买课程后可参与讨论,去登陆吧
同学你好,理解的有点问题。函数在调用的时候才会预编译函数内的代码。所以一开始全局预编译的时候,只有全局的a变量赋值为undefined提升,fn函数提升。
当代码从上到下执行到最后,fn函数调用的时候,才开始预编译fn函数中的内容。声明的a变量赋值为undefined,提升到函数顶部,所以从上到下执行函数内代码的时候,输出a为undefined,a赋值为2之后,输出a为2 。
祝学习愉快!
噢老师我知道了,你看下是不是这样的: 代码从上到下执行,函数外的var 变量赋值为undefined,看到有function定义的函数,将函数名保存在内存中,并且将函数内使用var 定义的变量赋值为undefined, 这时执行这个函数,所以第一个函数为undefined, 接着a就等于2,第二次打印为2。 老师应该是这个执行顺序吧?
还有老师,代码执行之前将函数内的局部变量和函数外的全局变量定义为undefined,并将function定义的函数提升并将函数名保存在内存中。这是JS的预编译吧?
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
登录后可查看更多问答,登录/注册
本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。
37 3
22 4
78 1
80 1
56 1
在线咨询
领取优惠
免费试听
领取大纲
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星