这个箭头函数在在定时器里调用的,this为什么不是window对象

这个箭头函数在在定时器里调用的,this为什么不是window对象

正在回答

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

2回答

同学你好,这里并不是将定时器和箭头函数看作为一个整体,可以参考如下解析:

setTimeout(()=>{...}, 1000)这种写法表示调用setTimeout函数,而里面的箭头函数是调用函数时传入的参数,可以理解为先定义了一个箭头函数,然后才作为参数传入setTimeout函数中的,类似于下图这种写法

http://img1.sycdn.imooc.com//climg/605c4be709e4679c04230091.jpg

所以setTimeout函数中箭头函数实际是在btn点击事件函数内部定义的,所以它里面的this指向btn,而不是window。

祝学习愉快~

好帮手慕慕子 2021-03-25 15:59:26

同学你好,因为箭头函数中的this指向该函数定义时所在作用域指向的对象,而不是使用时所在的作用域指向的对象,那么,这里的箭头函数虽然是在定时器里调用的,但是它是在btn点击事件函数内部定义的,所以箭头函数中的this执行btn,而不是window。如下图所示:

http://img1.sycdn.imooc.com//climg/605c426a0927c7bd14030782.jpg

祝学习愉快~

  • 提问者 席萌萌 #1

    为什么定时器里箭头函数要和定时器看成一个整体,去找定时器的作用域,而不是箭头函数直接找定时器的作用域

    2021-03-25 16:09:30
  • 提问者 席萌萌 #2

    为什么定时器里箭头函数要和定时器看成一个整体,去找定时器的作用域,而不是箭头函数直接找上一层的作用域 定时器这个函数

    2021-03-25 16:10:20
  • 提问者 席萌萌 #3

    是不是可以这么​理解,这个箭头函数是setTimeout的参数,所以是和setTimeout是一个整体。


    而不是  setTimeout方法里有一个箭头函数

    2021-03-25 16:12:31
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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