问题: 这段代码输出什么结果
for(var i = 0;i<4;i++){
setTimeout(function(){
console.log(i, '')
},1000)
}
输出结果: 输出了 4个4
若想要输入 i 可以如何操作
//将 var 改为 let
for(let i = 0;i<4;i++){
setTimeout(function(){
console.log(i, '')
},1000)
}
//自执行表达式
for(var i = 0;i<4;i++){
(function(num){
setTimeout(function(){
console.log(num, '')
},1000)
})(i)
}
//闭包
for (var i = 0; i < 4; i++) {
setTimeout((function (num) {
return function () {
console.log(num, '')
}
})(i), 1000)
}
//Promise
for(var i=0;i<4;i++) {
new Promise(resolve =>{
resolve(i)
}).then(num =>{
setTimeout(function(){
console.log(num)
})
})
}
//async
for (var i = 0; i < 4; i++) {
(async function ys(i){
setTimeout(function(){
console.log(i, '')
},1000)
})(i)
}