关于打印作用域链打印的问题

关于打印作用域链打印的问题

   //作用域链

   var name='xm';

   function fn(){

       var name='xh';

       var sex='male'

       function fn2(){

           var name='xhei';

           var age=18;

       }   


   }

   fn2();  

    console.log(name)

 







这里面怎么调用fn2的函数会报错,name打印也打印不出来,就是截图上的,代码怎么写才会打印出内层的name

相关截图:

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

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

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

2回答
好帮手慕言 2021-07-02 18:38:52

同学你好,相似问题在同学的另一个提问中回复了,快去查看吧,链接:http://class.imooc.com/course/qadetail/295014

祝学习愉快~

好帮手慕言 2021-07-01 18:42:35

同学你好,解答如下:

1、fn2函数是定义在fn函数里面,因此fn2只能在fn函数内部使用,在fn函数外部是获取不到fn2函数的,所以同学在全局调用fn2会报错。

如果想在全局获取到fn2函数,可以在fn函数中将fn2函数返回,如下:
http://img1.sycdn.imooc.com//climg/60dd99e70970415d03940425.jpg

fn函数执行,返回的是fn2函数,将fn2函数赋值给了fnfn2,打印fnfn2结果如下:

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

2、如果想打印出来的name是xhei,可以给fn2函数设置返回值,执行fnfn2就可以拿到xhei,如下:
http://img1.sycdn.imooc.com//climg/60dd9cb10959036509830493.jpg

控制台:

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

同学可以理解一下,祝学习愉快~

  • 提问者 yarwood #1

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

    这里和课程中讲的优先对不上啊,另外后面截图的注释的问题

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

    2021-07-02 15:29:03
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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