在使用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。
分享到:
相关推荐
#### 四、`window.setTimeout()`与`window.setInterval()`的区别 虽然`setTimeout`和`setInterval`都用于延迟执行代码,但它们之间有一个关键的区别:`setInterval`会重复执行指定的函数,直到被清除或窗口关闭;而...
这是我们常常会使用方法setInterval或setTimeout,但是由于这两个方法是由脚本宿主模拟出来的Timer线程,在通过其调用我们的方法是不能为其传递参数。 我们常用的使用场景是: 代码如下:window.setTimeout(...
本文将详细讲解window.setTimeout()和window.setInterval()的使用方式,并着重分析在不同场景下的参数传递问题。 首先,我们来看setTimeout和setInterval的基本用法。setTimeout方法用于将某个函数推迟执行一定的...
在JavaScript的世界里,`window`对象是全局对象,它提供了与浏览器窗口进行交互的各种方法和属性。本篇文章将深入探讨`window.open()`、`window.opener`、`window.name`以及`window`对象的一些核心概念,同时通过两...
JS 中 SetInterval 与 setTimeout 用法 在 JavaScript 中,SetInterval 和 setTimeout 是两种常用的定时器函数,用于实现延迟执行或重复执行某些操作。下面我们将详细讲解这两种函数的区别和用法。 SetTimeout ...
setInterval与setTimeout的区别 说道setTimeout,很容易就会想到setInterval,因为这两个用法差不多,但是又有区别,今天一起总结了吧! setTimeout 定义和用法: setTimeout()方法用于在指定的毫秒数后调用函数或...
JavaScript 中的 SetInterval 与 setTimeout 用法 在 JavaScript 中,SetInterval 和 setTimeout 是两种常用的定时器函数,用于实现延迟执行或重复执行某些操作。本文将详细介绍这两种函数的用法和区别。 ...
- window.clearInterval():此方法用于取消之前使用setInterval()设置的周期性执行的定时器。 4. Window对象的窗口位置与尺寸调整方法 - window.moveBy():此方法按照指定的像素值移动窗口。 - window.moveTo():此...
本文将详细介绍与`window`对象相关的方法和属性,帮助开发者深入了解并掌握这些特性。 #### 一、Window对象常用方法 ##### 1. `window.open()` - **语法**:`window.open(url, name, features)` - **描述**: - ...
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....
/****************************************************** // // 功能: 修改window.setTimeout,使之可以传递参数和对象参数 // 使用方法: window.setTimeout(回调函数,延迟时间,参数1,参数n) // ******************...
Window对象在Web开发中扮演着至关重要的角色,它是JavaScript中全局对象的一个实例,几乎所有的其他JavaScript对象都是Window对象的后代。了解并熟练掌握Window对象的方法和属性,可以帮助开发者编写出性能更高、更...
与`setTimeout()`类似,`setInterval()`的第二个参数也是一个延迟时间,但区别在于它会每隔这个时间重复执行提供的函数。这也意味着,如果执行函数本身需要的时间超过设定的延迟,可能会出现函数调用的重叠。 考虑...
setTimeout和setInterval的语法相同。它们都有两个参数,一个是将要执行的代码字符串,还有一个是以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码。不过这两个函数还是有区别的,setInterval在执行完...
它提供了许多用于控制浏览器窗口的功能,如打开、关闭、移动、调整大小、滚动以及与用户交互的方法。以下是对Window对象的一些关键属性和方法的详细解释: 1. **open方法**: `window.open(URL, windowName, ...
JavaScript中的Window对象是全局对象,它是每个浏览器窗口的核心,提供了许多与浏览器窗口交互的方法和属性。这个对象在JavaScript中无处不在,因为它既是全局变量也是全局函数的容器。以下是Window对象的一些主要...
`window.setTimeout(function, 时间间隔)` 用于延迟执行一个函数,`时间间隔`以毫秒为单位。`window.clearTimeout(timeoutID)` 可用于取消已设置的定时器,其中`timeoutID`是通过`setTimeout`返回的ID。 7. **...
在Vue.js应用中,我们经常会遇到使用`setTimeout`和`setInterval`来实现某些延时或周期性操作。然而,如果不正确地管理这些定时器,它们可能会在组件被销毁后仍然继续运行,导致不必要的资源消耗和潜在的问题。本文...