for循环中的变量作用域问题

本文最后更新于:2023年3月21日 下午

1
2
3
4
5
for (var i = 0; i < 5; i++) {
setTimeout(function () {
console.log('i=' + i);
}, 0);
}

请问:输出结果是什么?

五个i=5

那么要实际输出1~5应该怎么修改?

1
2
3
4
5
for (let i = 0; i <= 5; i++) {
setTimeout(function timer() {
console.log('i=' + i);
}, 0);
}

或者:

1
2
3
4
5
6
7
for (var i = 0; i <= 5; i++) {
(function(j) {
setTimeout(function() {
console.log('j=' + j);
}, 0);
})(i);
}

for循环中的变量作用域问题
https://seven3.site/js/for循环中的变量作用域问题/
作者
Seven3s
发布于
2017年2月20日
许可协议