老师,请教个问题

老师,请教个问题

调用函数,是不是就等于把函数放在调用语句的位置执行,然后访问变量的时候,再一步一步的向外寻找

在这里输入代码,可通过选择【代码语言】突出显示

正在回答

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

4回答

同学你好,是可以这样理解的。祝学习愉快!

好帮手慕言 2020-11-27 18:20:51

同学你好,同学提供的截图和老师给出的例子是两种不同的情况,同学提供的例子,在调用函数时传递了参数,参考下方理解:

在foo内,实际执行的是console.log(arg)这句代码,该句代码内使用了变量arg,所以会从此处开始,先看foo内部是否定义了arg,如果没有,再往外查找。由于调用foo时,传入了实参a的值,所以foo会在调用函数的外部查找a的值。

老师给出的例子中,没有传递参数,会打印出全局作用域的num值。

祝学习愉快~

  • 提问者 xiao白做大事 #1

    也是就说:1.传入了参数的情况下,先看foo内部是否定义了arg,如果没有,就去调用函数的外部去寻找传入的参数 2.没有传入参数,先看foo内部是否定义了arg,如果没有,就在定义函数的外部找。 

    我这个理解对吗?老师

    2020-11-29 23:14:09
好帮手慕言 2020-11-27 16:24:28

同学你好,是定义fn函数的外部,例如:

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


祝学习愉快~

  • 提问者 xiao白做大事 #1

    5f9cc1570971ac8c06590711.jpg


    可是这个题的答案是,访问a的时候的作用链是:

    函数作用域 -> 块级作用域 –> 块级作用域 –> 函数作用域 –> 全局作用域

    这个怎么解释啊,按照老师说的,不应该是直接从foo函数到全局吗?

    2020-11-27 16:42:02
好帮手慕言 2020-11-27 14:06:39

同学你好,函数在定义时会有名字,例如:function fn(){},fn就是此函数的名字,调用函数时,函数名后面加()即可,例如:fn()。如果函数内部访问某变量,那么会先在fn函数内部查找,如果函数内部有此变量,就不会往外层查找了;如果在fn内部没有,会向fn函数外部查找。

祝学习愉快~

  • 提问者 xiao白做大事 #1

    fn函数的外部,是不是调用的地方的外部

    2020-11-27 15:27:53
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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