预解析和作用域链问题

预解析和作用域链问题

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

老师,对于这个问题不是很懂。我知道如果只看预解析的话,执行fn()的话,结果是undefined;但是如果结合上节课所学的作用域链,就不知道该如何思考了:fn(){}内部有一个局部变量a=2,根据上节课学的作用域链的知识,如果此作用域有的话,就不应该去外部去找。

不知道该怎么思考了,请老师指教

正在回答 回答被采纳积分+1

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

2回答
好帮手慕慕子 2019-07-23 10:11:46

同学能够自己发现并解决问题, 很棒哦。 继续加油, 祝学习愉快~~~~

提问者 慕九州5488076 2019-07-22 23:58:35

好吧,自己明白了,如果函数内部的变量不加var的话,这时看成全局变量,那么函数内部是没有变量的,这时通过作用域链看到外部,这时打印是1;如果函数内部的变量加var的话,这时看成局部变量,那么次函数是有变量的就不用通过作用域看函数外面得了,因为打印在变量赋值的上面,所以执行的时候打印的是undefined。

  • 你可以这样理解,刚开始把全局变量分出来,就是 var a和函数, a解析为undefined,然后赋值为一,接下来解析函数,函数里a是 没有声明,就是全局变量,全局变量解析为undefinde
    2019-11-12 01:03:35
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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