for(var i = 1; i <= 5; i ++){
setTimeout(function timer(){
console.log(i)
}, 0)
}
上面的代码一直输入6666666,如何让他按顺序输出1,2,3,4,5,
一、立即执行函数表达式
for(var i = 1;i <= 5;i++){
(function(j){
setTimeout(function timer(){
console.log(j)
}, 0)
})(i)
}
二、给定时器传入第三个参数
for(var i=1;i<=5;i++){
setTimeout(function timer(j){
console.log(j)
}, 0, i)
}
三、使用let
for(let i = 1; i <= 5; i++){
setTimeout(function timer(){
console.log(i)
},0)
}