js实现for循环1-10, 延迟500ms展示结果, 但结果总是错误的, 求办法

描述如题

代码如下

function test() {  for(var i=0; i<10; i++) {
    setTimeout(function(){
      (function (m) {        console.log(m);
      })(i)
    }, 500)
  }
}
test();

执行结果

https://img2.mukewang.com/5bf10d800001c33808470437.jpg

请教下解决办法, 并指出错误位置, 谢谢!


30秒到达战场
浏览 1160回答 1
1回答

慕森王

直接在setTimeout()里用即时执行封装下回调就行了,你封包在setTimeout()的里边跟没封区别不大:function&nbsp;test()&nbsp;{&nbsp;&nbsp;for(var&nbsp;i=1;&nbsp;i<11;&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;setTimeout((function(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(i); &nbsp;&nbsp;&nbsp;&nbsp;})(),&nbsp;500) &nbsp;&nbsp;} } test();补充:如果想做成间隔500ms一次console.log,那我觉得不如直接写成:var&nbsp;i&nbsp;=&nbsp;1;var&nbsp;ii&nbsp;=&nbsp;setInterval(function(){ &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(i<11)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(i); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clearInterval(ii); &nbsp;&nbsp;&nbsp;&nbsp;} },&nbsp;500);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript