局部作用域的优先级的问题

局部作用域的优先级的问题

不是说越内层的变量优先级更高啊,所以调用fn()的时候直接打印name就应该是xhei,而不是xm啊

这里和课程中讲的优先对不上啊,另外后面截图的注释的问题http://img1.sycdn.imooc.com//climg/60debff9092ece4108810336.jpg


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

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

1回答
好帮手慕言 2021-07-02 17:49:52

同学你好,解答如下:

1、fn2函数中使用var定义了name,值为xhei,是一个局部变量,调用fn函数,不会将fn2函数中的name改为全局变量,如果在如下位置打印name,会在全局作用域中查找name属性,打印结果为xm。

http://img1.sycdn.imooc.com//climg/60dede18093f9d7804300469.jpg

控制台:

http://img1.sycdn.imooc.com//climg/60dede3e09be8e1d05400184.jpg

2、如果在fn2函数中打印name,那么会先在fn2函数中查找name,会打印出xhei,如下(也就是同学理解的越内层的变量优先级更高):

http://img1.sycdn.imooc.com//climg/60deded309c218f604190465.jpg

控制台:

http://img1.sycdn.imooc.com//climg/60dedf1d099edc1405730221.jpg

3、fn2函数的返回值是name(也就是xhei),只有执行了fn2函数,才能拿到xhei,如下:

http://img1.sycdn.imooc.com//climg/60dee2a1091b1fc812500106.jpg

控制台:

http://img1.sycdn.imooc.com//climg/60dedfdd09def9ef05070166.jpg

4、代码中,fnfn2是fn函数的返回值,也就是fn2函数,可以打印出来看看:

http://img1.sycdn.imooc.com//climg/60dee03009a9a0ae03970459.jpg

控制台:

http://img1.sycdn.imooc.com//climg/60dee039094ccb8007430272.jpg

执行fnfn2相当于执行fn2函数,把fn2函数的返回值赋值给了fnName,打印fnName就可以得到xhei。

同学不要着急,按照老师的回复再缕一下思路。

祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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