for(var i=0;i<5;i++){setTimeout(()=>{console.log(i)}, 0)} 的几种解法
第一种 闭包
for(var i=;i<5;i++){
(function(i){
setTimeout(()=>{
console.log(i);
}, 0);
})(i)
}
for (var i = 0; i < 5; i++) {
(() => {
var privateI = i;
setTimeout(() => {
console.log(privateI);
}, 0);
})()
}
第二种 使用let
for(let i=0;i<5;i++){
setTimeout(()=>{
console.log(i);
}, 0);
}
第三种 使用setTimeout的第三个参数
for(var i=;i<5;i++){
setTimeout(()=>{
console.log(i);
}, 0, i);
}
第四种 使用Promise
for(var i=;i<5;i++){
Promise.resolve(i).then(i=>{
setTimeout(()=>{
console.log(i);
}, 0);
})
}
第五种 try catch
for (var i = 0; i < 5; i++) {
try {
throw i
} catch (i) {
setTimeout(() => {
console.log(i);
}, 0);
}
}

浙公网安备 33010602011771号