for(var i = 0;i<5;i++){setTimeout(function(){alert(i);},500);}
setTimeOut是异步的,等你500毫秒输出时,for循环早就跑完了,i早变成5了你可以这样看一下
setTimeout(function(){ alert(i); },100); alert("阻断"); }
这样就能输出12345了,那个100若是改为3000还是会输出别的数字到这里你就能明白运行机理了