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

bluesky1年前 ⋅ 773 阅读
原因:JS的异步特性造成的,setTimeout里面传入的函数在定时器到点以后才会被调用,当调用时,循环已经结束(i=5),因此输出5个5。

正确的代码:
for(var i=0; i<5; i++){
	(function(j) {
		setTimeout(()=>console.log(j), 1000)
	})(i)
}

全部评论: 0

    相关推荐