javascript

//以下这段代码将输出什么呢?
for(var i=1;i<=3;i++){
  setTimeout(function(){console.log(i);},0);
}

答案:4,4,4

原理:调用setTimeout的时候,会有一个延时事件排入事件队列,然后JS代码的主逻辑会继续去执行setTimeout之后的JS代码,直到再也没有任何代码的时候,

         JS虚拟机会去事件队列里把满足条件出发的事件执行掉

原文地址:https://www.cnblogs.com/michaeljunlove/p/4114519.html