主页 个人前端笔记 setTimeout延时的重要性
admin
发表于2012-11-11 18:42:53    只看楼主 楼主
头衔:  精益求精
注册时间: 2012-10-07
用户组: 日常管理组
发帖数:  502
金币数:  186
短消息
<script>
for ( var i=10;i>=0;i-- ) {
        (function(){
            var pos = i;
            setTimeout(function(){
                alert(pos);                            
                }, ( pos + 1 ) * 10 );
        })();
    }
 </script>
以此代码为例,在for循环递减中有一个闭包函数,用alert弹出pos的值,
错误的理解是,依次弹出10,9,8,7,。。。。

但是实际运行弹出0,1,2,3.。。。。

原因就是忽略了延时,(pos+1)*10,
因此当pos=10的时候,它要在110ms的时候才被弹出
当时间为10ms的时候,首先弹出的自然是0,。
 
admin
发表于2012-11-11 18:43:00 1楼
头衔:  精益求精
注册时间: 2012-10-07
用户组: 日常管理组
发帖数:  502
金币数:  186
短消息
区别:setTimeout是运行一次,而setInterval是一直运行

回复人
回复内容

Powered BY YouYaX
个人自主开发论坛,从2010年10月份开发至今!

操作管理