这道题结果为啥是A啊

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

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

2回答
好帮手慕然然 2021-09-28 10:32:16

同学你好,@长慕为生同学回答的没问题,同学可以参考着理解一下。

关于上下文规则的内容,建议同学先把结论记牢,等遇到这类问题的时候,直接套结论即可。

首先,上下文规则3为:数组(类数组对象)枚举出函数进行调用【即:数组[下标]()】,此时上下文(this指向)是这个数组(类数组对象)。

然后,开始套用:从这段代码arr[3](),可以看出函数的调用方式为,数组枚举出函数进行调用【规则3】。

所以,在数组arr中下标值为3的位置处的函数中,this指向这个数组,如图

https://img1.sycdn.imooc.com//climg/6161382a099ba1c911010432.jpg

祝学习愉快!

  • 提问者 球球不一般 #1

    不明白能把运行过程讲下吗

    2021-11-28 21:12:29
  • 好帮手慕然然 回复 提问者 球球不一般 #2

    同学你好,运行过程如下:

    首先,var arr = ['A','B','C',function(){console.log(this[0])}] 表示arr是一个数组,这个数组中有四个元素,其中一个元素是function


    然后,arr[3]表示获取arr数组中下标值为3的元素,即function(){console.log(this[0])},此时arr[3]就是一个函数,arr[3]()就是以小括号的形式调用这个函数


    最后,当调用函数后,就会执行这个函数中的代码,也就是执行console.log(this[0])这个打印语句,要打印的内容是this[0],此时就要分析一下这个this是什么?

    这时就要看上下文规则【3】:数组枚举出函数进行调用,即以 数组[下标]() 的形式调用函数(arr[3]()就是这种形式),此时this就是这个数组。(这些规则记住即可,不需要理解)

    this[0]就是这个数组中下标为0的元素,即'A'

    祝学习愉快!

    2021-11-29 11:28:34
  • 提问者 球球不一般 回复 好帮手慕然然 #3

    arr[3]表示获取arr数组中下标值为3的元素,不是function(),也没有获取console.log(this[0]啊

    然后,arr[3]表示获取arr数组中下标值为3的元素,即function(){console.log(this[0])},此时arr[3]就是一个函数,arr[3]()就是以小括号的形式调用这个函数


    最后,当调用函数后,就会执行这个函数中的代码,也就是执行console.log(this[0])这个打印语句,要打印的内容是this[0],此时就要分析一下这个this是什么

    这几句话不是很明白能给解释下吗

    2021-11-29 18:10:09
长慕为生 2021-09-27 23:22:50

arr[3]();是调用function(){}函数执行里面的语句体 console.log(this[0]); 而函数的上下文是由函数的调用方式决定的。这里是数组枚举调用的。在上下文规则3中,数组(类数组对象)枚举出函数进行调用,上下文是这个数组(类数组对象)。所以当前this指代的是arr这个数组,this[0]就是arr[0]='A'

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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