如果要下面代码输出0~9,怎么改
for (var i = 0; i < 10; i++) {
setTimeout(() => {
console.log(i);
}, 0);
}
原因:异步执行,var变量提升
- 作用域
for (let i = 0; i < 10; i++) {
setTimeout(() => {
console.log(i);
}, 0);
}
- 不要异步
for (let i = 0; i < 10; i++) {
console.log(i);
}
- 立即执行
for (var i = 0; i < 10; i++) {
((i) => setTimeout(() => {
console.log(i);
}, 0))(i);
}
- setTimeout带参数
for (var i = 0; i < 10; i++) {
setTimeout((i) => {
console.log(i);
}, 0, i);
}