老师我问下,这个运行结果为啥是慕课网能说下运行过程吗,详细点

老师我问下,这个运行结果为啥是慕课网能说下运行过程吗,详细点

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

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

1回答
imooc_慕慕 2022-08-18 13:25:44

同学你好,解答如下:

代码自上而下执行,当fun()函数被调用的时候,此时返回fun函数内部的函数,

https://img1.sycdn.imooc.com//climg/62fdcb4809bd25e302870176.jpg

又因为将这个返回的函数定义给了inn变量,此时可以理解为

inn=function  innerFun(){alert(name)}

在调用fun函数的时候,生成了函数作用域,该作用域下,保存着变量   name = '慕课网‘  和  函数  

function  innerFun(){alert(name)}

当调用inn函数的时候,执行函数内部的代码alert(name),弹出name的值,由于当前 innerFun函数内部并没有声明name,所以会沿着作用域链向外查找找到fun函数作用域中的name后就会停止向外查找,弹出name的值,所以最终弹出的结果为'慕课网”。

同学可以再试着理解理解。

祝学习愉快~

  • 提问者 球球不一般 #1

    在调用fun函数的时候,生成了函数作用域,该作用域下,保存着变量   name = '慕课网‘  和  函数  

    function  innerFun(){alert(name)}

    当调用inn函数的时候,执行函数内部的代码alert(name),弹出name的值,由于当前 innerFun函数内部并没有声明name,所以会沿着作用域链向外查找找到fun函数作用域中的name后,就会停止向外查找,弹出name的值,所以最终弹出的结果为'慕课网”

    同学可以再试着理解理解。

    这句话不是很理解

    2022-08-18 13:49:05
  • imooc_慕慕 回复 提问者 球球不一般 #2

    同学你好,解答如下:

    https://img1.sycdn.imooc.com//climg/62fdd774091b6cf611980369.jpg


    此时的inner指代的是innerFun函数,所以当执行46行代码的时候,就会执行这个innerFun函数,即弹出变量name,又因为,innerFun函数中没有name变量,因此会向上一层作用域去寻找,上一层有,就会停止寻找,直接弹出name值。

    函数执行的时候形成函数作用域,而这个过程中会沿着作用域链从里向外去查找

    https://img1.sycdn.imooc.com//climg/62fdd9c509389c0d07680479.jpg

    祝学习愉快~

    2022-08-18 14:20:17
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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