问题描述:
这道题函数会提升,且后一个函数会覆盖前一个。那变量是什么情况呢?请老师详说!
登陆购买课程后可参与讨论,去登陆吧
同学你好,预解析阶段,函数声明,变量声明都会提前,同名函数会覆盖同名变量;
变量提升,提升的是变量名var a,赋值留在原地,a=1;a=3; 还留在原地;解析参考如下图:
同学可以试着再理解理解,如解答没有满足同学的需求,同学可以将问题再进一步描述;
祝学习愉快~
为什么函数体a可以进行赋值操作呢?function a() {console.log(4)};是一个函数体,为什么可以通过a=1;赋值呢?它的var a;声明操作不是被覆盖了吗?如果要赋值不得重新声明吗?函数和变量到底啥关系呀,混在一起很晕呐
不是说函数提升优先吗?那么自上而下不是应该先提升完函数再提升变量吗?而解答中为什么一开头就先提升第一个变量呢?
按照老师的解答,提升完第一个变量和第一个函数后,不是应该提升第二个变量吗?为什么你的解答中先提升的第二个函数,最后才提升第二个变量呢?
同学你好,是这样的,因为函数a,和var a 变量,其实是同时注册在window上的,而代码自上而下执行,所以会发生交替(即覆盖);而a =1;等同于window.a =1 等同于var a =1;
a函数 等同于 window.a = function(){};
所以函数a会被a的赋值所覆盖;
函数和变量只是同名,并没有关系;
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
登录后可查看更多问答,登录/注册
入行前端,是明智的选择!市场需求大,就业前景好,入行门槛低,小白易上手 全新升级:技术更新,Vue3.0/TypeScript/React17.x; 技术更全面,从0基础到全栈开发再到大型项目构建
157 1
75 1
31 2
200 5
155 1
在线咨询
领取优惠
免费试听
领取大纲
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星