for循环里面settimeout(<script> for(var i=0;i<10;i++){ setTimeout(function(){ alert(i); },1000); } </script>)

本文目录
setTimeout是一次执行函数,这里是1秒后执行,仅仅执行一次;for(var i=0;i《10;i++),i的每次取值都是执行setTimeout这个函数,并没有执行setTimeout里面的function(即闭包函数),setTimeout里面的function是有setTimeout的定时触动的,也就是1秒后执行,也就是说i从0~9时,一共执行了10次的setTimeout()函数,此时的i的值是10,由于for语句的执行速度远小于1秒,所以,1秒后,由setTimeout()函数定时触动的闭包函数function()开始执行,alert(i);i的值已经是10了,所以相继打印10次i.
javascript for循环里面的settimeout执行问题
循环是在瞬间完成的,也就是在瞬间启动三个计时器(时间间隔不会超过1毫秒),就好像发令枪响,三个人同时起跑。Javascript的计时器无法精确到8毫秒以内(不记得哪里看到了,也许随着平台改进会有所提升,但别指望能区分1-2毫秒),因此三个alert同时执行可能出现先后。
这与你循环中直接调用alert不同。因为alert会暂停for循环,等关闭alert后执行下面代码。
最好设置不同时值,间距大于10毫秒。你试试这样写
《script》
function testAnonymous() {
var aa = 0;
var bb = 1;
for(var i = 0; i 《 3; i++) {
aa++;
bb++;
setTimeout(’alert(’+aa+’)’,1000+aa*10);
//setTimeout(function(){return testDisplay(aa,bb);},1000);
}
}
testAnonymous()
《/script》
jquery里for循环里用setTimeout,循环的值i总是传不进去
for (var i=0; i《6; i++){
(function(i){
$big = $("#bigline").children().eq(i);
setTimeout(function(){$big.animate({left:"+=30px",opacity:"show"},200);},200*i);
})(i)
}
ps:可行性我没测试过

更多文章:
comecloser是什么意思(the boots came closer and closer句子里的closer是什么词)
2025年9月23日 14:45
praise sb for(praise sb for 后面是加that 从句吗)
2025年9月30日 20:00
tostring和强转string(String s = (String)4; 能不能这样将int类型的数强制转换为String类型)
2025年10月29日 18:00
菜鸟编程步骤(北大青鸟java培训:Java菜鸟入门怎么学)
2026年8月20日 21:00
字符串连接不用strcat(C语言编程:5、编一个程序,将两个字符串连接起来,不要用strcat函数.)
2025年7月21日 11:30
hadoop启动(hadoop搭建中,单独开启资源管理器的命令是)
2025年9月23日 11:15
物联网平台搭建需要多少钱(搭建智慧城市的停车场系统设备费用是多少)
2026年1月4日 18:15
sumifs多条件求和步骤大于等于(sumifs函数中大于等于怎么打)
2025年9月12日 14:00
自适应网站带后台模板(wordpress网站如何实现自适应)
2026年2月16日 11:30
python程序员工资(python工资高还是java的高)
2025年9月22日 13:30
sublime插件下载(sublime 安装atom特效插件怎么安装)
2025年12月5日 00:15














