精解window.setTimeout()&window.setInterval()使用方式与参数传递问题!

所属分类: 网络编程 / JavaScript 阅读数: 1422
收藏 0 赞 0 分享
在使用JScript的时候,我们有时需要间隔的执行一个方法,比如用来产生网页UI动画特效啥的。这是我们常常会使用方法setInterval或setTimeout,但是由于这两个方法是由脚本宿主模拟出来的Timer线程,在通过其调用我们的方法是不能为其传递参数。

    我们常用的使用场景是: 

复制代码 代码如下:

window.setTimeout("delayRun()", n); 
window.setInterval("intervalRun()", n); 
window.setTimeout(delayRun, n); 
window.setInterval(intervalRun, n); 

    显然强行代参数的调用: window.setTimeout("delayRun(param)", n); 
复制代码 代码如下:

window.setInterval("intervalRun(param)", n); 
window.setTimeout(delayRun(param), n); 
window.setInterval(intervalRun(param), n); 

    都是错误的,因为string literals形式的方法调用,param必须是全局变量(即window对象上的变量)才行;而function pointer形式的调用,完全错误了,这是把函数的返回值当成了setTimeout/setInterval函数的参数了,完全不是我们所望的事情。

    解决这个问题的办法可以使用匿名函数包装的方式,在以下scenario中我们这么做: 
复制代码 代码如下:

function foo() 

    var param = 100; 
    window.setInterval(function() 
    { 
        intervalRun(param); 
    }, 888); 


function interalRun(times) 

    // todo: depend on times parameter 

    这样一来,就可以不再依赖于全局变量向delayRun/intervalRun函数中传递参数,毕竟当页面中的全局变量多了以后,会给脚本的开发、调试和管理等带来极大的puzzle。

更多精彩内容其他人还在看

Js nodeType 属性全面解析

本文是对Js nodeType的属性进行了全面分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助
收藏 0 赞 0 分享

浅析用prototype定义自己的方法

下面小编将通过实例由浅入深讲解 prototype 的具体使用方法。需要的朋友可以过来参考下,希望对大家有所帮助
收藏 0 赞 0 分享

使用jQuery解决IE与FireFox下createElement方法的差异

使用jQuery解决IE与FireFox下createElement方法的差异。需要的朋友可以过来参考下,希望对大家有所帮助
收藏 0 赞 0 分享

jQuery探测位置的提示弹窗(toolTip box)详细解析

提示弹窗(toolTip box)经常会被用到,但是本文总要的不是弹,也不是窗,而是探测位置,在适当的地方弹窗。需要的朋友可以过来参考下,希望对大家有所帮助
收藏 0 赞 0 分享

JS中typeof与instanceof之间的区别总结

本文是对JS中typeof与instanceof之间的区别进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
收藏 0 赞 0 分享

JS正则表达式大全(整理详细且实用)

JS正则表达式大全(整理详细且实用)。需要的朋友可以过来参考下,希望对大家有所帮助
收藏 0 赞 0 分享

Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

本文是对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
收藏 0 赞 0 分享

Jquery AJAX POST与GET之间的区别

本文是对Jquery中AJAX POST与GET之间的区别。进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
收藏 0 赞 0 分享

优化Jquery,提升网页加载速度

本文是对优化Jquery,提升网页加载速度方面进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
收藏 0 赞 0 分享

提高jQuery性能的十个诀窍

下面小编就为大家分享一篇提高jQuery性能的十个诀窍。很实用的。需要的朋友可以过来参考下,希望对大家有所帮助
收藏 0 赞 0 分享
查看更多