javascript的一个闭包和延时器问题
PHP中文网
PHP中文网 2017-04-10 14:33:47
[JavaScript讨论组]

刚才看到一个问题,然后写了如下代码

for(var i=1;i<=3;i++){  
(function(i){
    setTimeout(function(){
    	alert(i);
    },10000);
})(i);
}

发现10秒延迟之后弹出1 3 2,而换成1秒延迟就是1 2 3,想不明白.

PHP中文网
PHP中文网

认证0级讲师

全部回复(2)
PHPz

10秒之后也可能出现123,这个是随机的,取决于调度算法,不能依赖于这个顺序。

天蓬老师

你把alert改成console.log就没问题了。
alert会影响定时器的调度。
所以,通常调试js时,这个问题必须注意啊。
一不小心,就掉坑里了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号