setTimeout问题

代码1:

for (var i = 0; i < 5; i++) {
  setTimeout((function(){
      console.log("delayer:" + i);
  })(),0);
  console.log(i);
}

问题:
代码1:setTimeout(立即执行函数,0)循环里面不是有console.log(i),为什么不是先执行console.log(i)而是先执行setTimeout(立即执行函数,0)

阅读 2.5k
2 个回答

(function(){console.log(1)})();

这样的立即执行函数,直接运行了,这后面的console.log和setTimeout有什么关系了。。

调用setTimout的时候,相当于调用立刻执行函数返回的undefinde

setTimeout((function(){console.log("delayer:" + i);}),0);
这么改一下就是你理解的效果了~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题