for (var i = 0; i < 5; i++) {
(function (i) {
setTimeout((i) => {
console.log(i);
}, i * 1000);
})(i)
}
打印结果是5个undefined
如果settimeout的箭头函数换成普通函数就能正常打印1-5,为什么使用箭头函数不行呢?
for (var i = 0; i < 5; i++) {
(function (i) {
setTimeout((i) => {
console.log(i);
}, i * 1000);
})(i)
}
打印结果是5个undefined
如果settimeout的箭头函数换成普通函数就能正常打印1-5,为什么使用箭头函数不行呢?
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
把你箭头函数的参数i去掉,这个箭头函数是定时器的回调函数,而定时器回调没有参数,所以是undefined,另外打印的i是从0开始的,所以需要加1