一个关于this的问题
来源:1-1 导学

一只小木马
2022-07-14
老师我运行了下这段代码,为什么结果是undefined和1
第一次调用b,setTimeout的回调因为是箭头函数,箭头函数的this指向其父级指向的this,那么不是指向window吗
第二次调用b,用call改变了b中的this指向,所以箭头函数中的this指向了a,但是因为setTimeout是宏任务,要等同步任务执行完成之后再执行,后续同步任务不是更改了a的值吗,但是为什么还是1不是2,有点不太明白
var a = 0;
(function() {
var a = { a : 0 };
var b = function() {
setTimeout(() => {
console.log(this.a)
})
}
b(); // undefined
b.call(a); // 1
a.a = 1;
a = { a : 2 }
})()
写回答
1回答
-
双越
2022-07-15
我用你的代码,在 chrome 控制太执行,打印的是 0 1
你再重新确认一下
022022-07-15
相似问题