`
sbiigu
  • 浏览: 163406 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

window.setTimeout() & window.setInterval() 使用方式与参数

阅读更多
在使用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。
分享到:
评论

相关推荐

    JavaScript_window.setTimeout()_的详细用法

    #### 四、`window.setTimeout()`与`window.setInterval()`的区别 虽然`setTimeout`和`setInterval`都用于延迟执行代码,但它们之间有一个关键的区别:`setInterval`会重复执行指定的函数,直到被清除或窗口关闭;而...

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

    这是我们常常会使用方法setInterval或setTimeout,但是由于这两个方法是由脚本宿主模拟出来的Timer线程,在通过其调用我们的方法是不能为其传递参数。 我们常用的使用场景是: 代码如下:window.setTimeout(...

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

    本文将详细讲解window.setTimeout()和window.setInterval()的使用方式,并着重分析在不同场景下的参数传递问题。 首先,我们来看setTimeout和setInterval的基本用法。setTimeout方法用于将某个函数推迟执行一定的...

    字符串 window.open() window.opener window.name window对象等的总结

    在JavaScript的世界里,`window`对象是全局对象,它提供了与浏览器窗口进行交互的各种方法和属性。本篇文章将深入探讨`window.open()`、`window.opener`、`window.name`以及`window`对象的一些核心概念,同时通过两...

    js中SetInterval与setTimeout用法

    JS 中 SetInterval 与 setTimeout 用法 在 JavaScript 中,SetInterval 和 setTimeout 是两种常用的定时器函数,用于实现延迟执行或重复执行某些操作。下面我们将详细讲解这两种函数的区别和用法。 SetTimeout ...

    JavaScript window.setTimeout() 的详细用法

    setInterval与setTimeout的区别 说道setTimeout,很容易就会想到setInterval,因为这两个用法差不多,但是又有区别,今天一起总结了吧! setTimeout 定义和用法: setTimeout()方法用于在指定的毫秒数后调用函数或...

    js中SetInterval与setTimeout用法.pdf

    JavaScript 中的 SetInterval 与 setTimeout 用法 在 JavaScript 中,SetInterval 和 setTimeout 是两种常用的定时器函数,用于实现延迟执行或重复执行某些操作。本文将详细介绍这两种函数的用法和区别。 ...

    jsWindow对象及方法.pdf

    - window.clearInterval():此方法用于取消之前使用setInterval()设置的周期性执行的定时器。 4. Window对象的窗口位置与尺寸调整方法 - window.moveBy():此方法按照指定的像素值移动窗口。 - window.moveTo():此...

    关于js-window对象的方法和属性资料

    本文将详细介绍与`window`对象相关的方法和属性,帮助开发者深入了解并掌握这些特性。 #### 一、Window对象常用方法 ##### 1. `window.open()` - **语法**:`window.open(url, name, features)` - **描述**: - ...

    IFrame AND window对象

    4. **定时器**:`window.setTimeout()`和`window.clearTimeout()`用于设置和清除定时执行的函数,`window.setInterval()`和`window.clearInterval()`则用于周期性执行函数。 例如,以下代码会在5秒后弹出一个消息框...

    推拉门式菜单

    >function regenerate(){window.location.reload()}function regenerate2(){if (document.layers)setTimeout("window.onresize=regenerate",400)}window.onload=regenerate2if (document.all){document....

    使用自定义setTimeout和setInterval使之可以传递参数和对象参数

    /****************************************************** // // 功能: 修改window.setTimeout,使之可以传递参数和对象参数 // 使用方法: window.setTimeout(回调函数,延迟时间,参数1,参数n) // ******************...

    window对象方法属性全解

    Window对象在Web开发中扮演着至关重要的角色,它是JavaScript中全局对象的一个实例,几乎所有的其他JavaScript对象都是Window对象的后代。了解并熟练掌握Window对象的方法和属性,可以帮助开发者编写出性能更高、更...

    Javascript中, setTimeout() 和 setInterval() 的方法

    与`setTimeout()`类似,`setInterval()`的第二个参数也是一个延迟时间,但区别在于它会每隔这个时间重复执行提供的函数。这也意味着,如果执行函数本身需要的时间超过设定的延迟,可能会出现函数调用的重叠。 考虑...

    JavaScript SetInterval与setTimeout使用方法详解

    setTimeout和setInterval的语法相同。它们都有两个参数,一个是将要执行的代码字符串,还有一个是以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码。不过这两个函数还是有区别的,setInterval在执行完...

    window属性大全

    它提供了许多用于控制浏览器窗口的功能,如打开、关闭、移动、调整大小、滚动以及与用户交互的方法。以下是对Window对象的一些关键属性和方法的详细解释: 1. **open方法**: `window.open(URL, windowName, ...

    JavaScript_之Window对象.doc

    JavaScript中的Window对象是全局对象,它是每个浏览器窗口的核心,提供了许多与浏览器窗口交互的方法和属性。这个对象在JavaScript中无处不在,因为它既是全局变量也是全局函数的容器。以下是Window对象的一些主要...

    window对象的常用方法和作用

    `window.setTimeout(function, 时间间隔)` 用于延迟执行一个函数,`时间间隔`以毫秒为单位。`window.clearTimeout(timeoutID)` 可用于取消已设置的定时器,其中`timeoutID`是通过`setTimeout`返回的ID。 7. **...

    VUE中setTimeout和setInterval自动销毁案例

    在Vue.js应用中,我们经常会遇到使用`setTimeout`和`setInterval`来实现某些延时或周期性操作。然而,如果不正确地管理这些定时器,它们可能会在组件被销毁后仍然继续运行,导致不必要的资源消耗和潜在的问题。本文...

Global site tag (gtag.js) - Google Analytics