预解析后的函数处理

预解析后的函数处理

视频05:08秒时候,187-189行,为什么明明有个function但是最后a()要出错呢? 

如果说190行的时候,因为没有调用,a还是为3;但是191行调用了,不能log里输入4吗?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,不是的哦,预解析的最后a是个函数,所以第一个输出的函数a,如下:

http://img1.sycdn.imooc.com//climg/5e5f65f0095b4a3c09050036.jpg

因为这里是先预解析,然后再次按照从上到下执行代码,第一个执行的是输出a,就是上面输出的一个a()。然后接着往下执行,给a赋值了,变为了1。接着往下执行,最后赋值为3,已经不是函数了哦。

就是先进行预解析,然后按照从上到下执行代码。

祝学习愉快~

  • 幕布斯3322991 提问者 #1
    好像了解了。var的内容预解析时只是等于undefined, 而function因为预解析的时候后面的内容已经读过一遍,所以正式解析(术语来说预解析后面的这遍执行怎么说来着?)的时候就跳过了。对吧?
    2020-03-04 16:41:44
好帮手慕糖 2020-03-04 10:24:41

同学你好,不能哦,因为最后赋值,是将a赋值为3了,就不是函数了,将之前的函数替换了,所以a是3,不是函数,调用就会报错。课程中老师也有逐步分析哦,可以再结合视频查看下。

如果我的回答帮助了你,欢迎采纳,祝学习愉快~

  • 提问者 幕布斯3322991 #1
    我是否可以这么理解: 如果有var的话,按照预解析的结果,a变成了3; 如果把var a=.. 都去掉,function 的定义才有效?
    2020-03-04 11:35:30
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师