js中 this在箭头函数中的指向问题

js中 this在箭头函数中的指向问题

this 到底指向哪里?

来看下面的代码

let obj = {
            testThis() {
                setTimeout(function() {
                    console.log(this); //Window 
                });
                setTimeout(() => {
                    console.log(this); //obj
                });
            }
        }
        obj.testThis()

为什么会这样?
首先一点,在箭头函数中,是没有this 这关键字的,他是一层层往外找,找到第一个有this 的定义就指向他

setTimeout(() => {
	console.log(this); //obj
 });

这里没有this 那么他就会在 testThis 这函数中去找,testThis函数中有this吗? 有的,那么他指向哪里呢? obj ,这就解释了,为什么在箭头函数中this 指向的是obj而不是window

总结:

箭头函数this是向外层作用域一层层找的,直到找到有this定义的那一层,this就指向他

该问题在stack overflow 上也有相关的帖子说明,有兴趣的话可以去看看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值