原因:JS的异步特性造成的,setTimeout里面传入的函数在定时器到点以后才会被调用,当调用时,循环已经结束(i=5),因此输出5个5。 正确的代码: for(var i=0; i<5; i++){ (function(j) { setTimeout(()=>console.log(j), 1000) })(i) }
原因:JS的异步特性造成的,setTimeout里面传入的函数在定时器到点以后才会被调用,当调用时,循环已经结束(i=5),因此输出5个5。 正确的代码: for(var i=0; i<5; i++){ (function(j) { setTimeout(()=>console.log(j), 1000) })(i) }