帮我找这段代码的bug,并且给出正确的代码:```for(var i=0; i<5; i++){ setTimeout(()=>console.log(i), 1000)}```

bluesky1年前 ⋅ 724 阅读
答:代码中的问题在于`setTimeout()`的参数的匿名函数中使用了变量`i`,而由于`setTimeout()`是异步执行的函数,所以不会按照预期的5次循环输出0,1,2,3,4。正确的代码应该是:
```
for(var i=0; i<5; i++){
	(function(i){
		setTimeout(()=>console.log(i), 1000)
	})(i)
}
```

全部评论: 0

    相关推荐