javascript - 利用闭包实现弹出1,2,3,4,5中两种实现方式的区别
迷茫
迷茫 2017-04-10 15:19:30
[JavaScript讨论组]

利用闭包可以实现一些特殊效果,比如下面两段代码:

function timeManage1() {
    for (var i = 0; i < 5; i++) {
        (function(num) {
            setTimeout(function() {
                console.log(num);
            }, 1000);
        })(i);
    }
}
function timeManage2() {
    for (var i = 0; i < 10; i++) {
        setTimeout((function(e) {
            return function() {
                console.log(e);
            }
        })(i), 1000)
    }
}

都是实现输出0,1,2,3,4。可是为什么第一段代码把console.log(num)换成alert(num)后弹出的数字顺序就不多了,而第二段就不存在这个问题呢?

function timeManage1() {
    for (var i = 0; i < 5; i++) {
        (function(num) {
            setTimeout(function() {
               alert(num);//弹出的数字顺序不对
            }, 1000);
        })(i);
    }
}
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(1)
大家讲道理

特意查了一下这个问题,说是因为chorme的问题,附上答案链接http://www.zhihu.com/question/20507212

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

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