这道题结果为啥是b啊

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

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

1回答
好帮手慕慕子 2021-11-29 10:28:51

同学你好,先了解下规则3,如下:

https://img1.sycdn.imooc.com//climg/61a438f209be9d9b08460226.jpg

然后再来看截图中的代码,运行过程如下:

1、定义了一个函数fun,该函数内部执行了一句代码arguments[3](),这句代码通过arguments[3]获取到调用fun传入的第四个参数,即:function() {console.log(this[1]);}

2、arguments[3]() 这句代码是调用类数组对象枚举出的函数,符合上图中的规则三,所以此时这个函数内部的this指向这个类数组对象arguments。

也就是说function() {console.log(this[1]);}函数中的this等价于arguments,即: this[1] 等价于arguments[1], 所以输出结果为B。

祝学习愉快~

  • 提问者 球球不一般 #1

    老师你回答的我全不明白

    2021-11-29 18:15:54
  • 好帮手慕慕子 回复 提问者 球球不一般 #2

    同学你好,建议同学结合视频讲解,自己动手写一写代码,在写代码的过程中也是帮助自己梳理的一个过程,最后结合代码运行的效果,帮助自己去更好的理解。

    老师这里再帮助同学梳理下:

    1、arguments[3]() 这句代码属于通过类数组对象arguments枚举出的函数进行调用

    https://img1.sycdn.imooc.com//climg/61a4aa47097ef56705990362.jpg

    2、arguments接收调用fun函数时传入的所有参数,可以输出查看下,示例:

    https://img1.sycdn.imooc.com//climg/61a4ab0a09383bb914710388.jpg

    3、arguments[3]获取的就是传入的fun的函数function () { console.log(this[1]) }

    4、arguments[3]()就是调用这个函数function () { console.log(this[1]) },由第一条可知,适用规则3的函数内部this指向这个类数组对象,也就是说,此时,function () { console.log(this[1]) }这个函数内部的this指向arguments

    https://img1.sycdn.imooc.com//climg/61a4abc80983094806650278.jpg

    也就是说this[1]等价于arguments[1],获取arguments中索引为1的值。

    由第二条的截图中输出的结果可知,arguments类数组中索引为1的值为B,所以最终结果为B

    祝学习愉快~

    2021-11-29 18:32:02
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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