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 上也有相关的帖子说明,有兴趣的话可以去看看