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

 更新时间:2007年11月23日 16:58:39   作者:  
在使用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。

相关文章

  • 基于layui轮播图满屏是高度自适应的解决方法

    基于layui轮播图满屏是高度自适应的解决方法

    今天小编就为大家分享一篇基于layui轮播图满屏是高度自适应的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • 微信小程序实现商品数据联动效果

    微信小程序实现商品数据联动效果

    这篇文章主要介绍了微信小程序实现商品数据联动效果,代码很简单,直接复制即可根据自己的需求去修改,对小程序商品数据联动实例代码感兴趣的朋友一起看看吧
    2022-08-08
  • 前端实现文本超出指定行数显示"展开"和"收起"效果详细步骤

    前端实现文本超出指定行数显示"展开"和"收起"效果详细步骤

    本文介绍如何使用JavaScript原生代码实现文本折叠展开效果,并提供方法指导如何在Vue或React等框架中修改实现,详细介绍了创建整体框架、设置样式及利用JS控制元素的步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-10-10
  • javascript 事件绑定问题

    javascript 事件绑定问题

    在子页面(<iframe></iframe>)创建父级事件!当子页面(<iframe></iframe>)被销毁!子页面(<iframe></iframe>)创建父级事件也会被销毁!
    2011-01-01
  • 详解如何利用chatgpt保护您的js代码

    详解如何利用chatgpt保护您的js代码

    这篇文章主要为大家介绍了如何利用chatgpt保护您的js代码详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • JS实现中国公民身份证号码有效性验证

    JS实现中国公民身份证号码有效性验证

    这篇文章主要介绍了JS实现中国公民身份证号码有效性验证,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • js动态创建表格,删除行列的小例子

    js动态创建表格,删除行列的小例子

    这篇文章介绍了js动态创建表格,删除行列的实例代码,有需要的朋友可以参考一下
    2013-07-07
  • JavaScript中的变量声明你知道吗

    JavaScript中的变量声明你知道吗

    这篇文章主要为大家详细介绍了JavaScript中的变量声明,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • 效果直逼flash的Div+Css+Js菜单

    效果直逼flash的Div+Css+Js菜单

    效果直逼flash的Div+Css+Js菜单...
    2007-05-05
  • javascript中的缓动效果实现程序

    javascript中的缓动效果实现程序

    javascript中的缓动效果可以应用于很多地方,比如距离位移上的变化:图片的滚动、焦点图的轮转切换,透明度上的变化:渐隐渐现。凡是存在运动的状态都适用,下面以最基本的块在容器内从左到右滑动为例,讲下几种不同的缓动处理方式
    2012-12-12

最新评论