JS中setInterval、setTimeout不能传递带参数的函数的解决办法
JS中setInterval、setTimeout不能传递带参数的函数的解决办法
在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数,这就需要想方法解决。
一、采用字符串形式:——(缺陷)参数不能被周期性改变
setInterval("foo(id)",1000);
二、匿名函数包装
window.setInterval(function()
{
foo (id);
}, 1000);
这样就可以周期性执行foo(id)这个函数,而且把变量id传递进去;
三、定义返回无参函数的函数
function foo(id)
{
alert(id);
}
function _foo(id)
{
return function()
{
foo(id);
}
}
window.setInterval(_foo(id),1000);
这里定义了一个函数_foo,用于接收一个参数,并返回一个不带参数的函数,在这个函数内部使用了外部函数的参数,从而对其调用,不需要使用参数。在 window. setInterval函数中,使用_foo(id)来返回一个不带参数的函数句柄,从而实现了参数传递的功能。
四、修改setInterval
function foo(id)
{
alert(id);
}
var _sto = setInterval;
window.setInterval = function(callback,timeout,param)
{
var args = Array.prototype.slice.call(arguments,2);
var _cb = function()
{
callback.apply(null,args);
}
_sto(_cb,timeout);
}
window.setInterval(hello,3000,userName);
以上的所有方法也适合setTimeout。
分享到:
相关推荐
在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数, 这就需要想方法解决。 一、采用字符串形式:——(缺陷)参数不能被周期性改变 setInterval(“foo(id...
JavaScript 中 setTimeout 和 setInterval 函数的传参及调用 在 JavaScript 中,setTimeout 和 setInterval 函数都是用于在指定的时间点执行某个函数的,但是它们的传参方式和调用方式却有所不同。 setTimeout ...
在这个主题中,我们将深入探讨`setTimeout`和`setInterval`这两个核心定时器函数,它们在JavaScript中的应用以及它们之间的区别。 首先,`setTimeout`函数用于在指定的毫秒数后调用一个函数或执行一段代码。它的...
这种方法的缺点是字符串化的函数不能直接利用JavaScript的动态性,如果参数包含复杂的数据类型(如对象),则需要额外的序列化和反序列化步骤,这可能导致代码更难以理解和维护。 ### JavaScript定时器的其他知识点...
### JS中的setTimeout与setInterval的区别 在JavaScript编程中,`setTimeout`与`setInterval`是两个非常常用的函数,用于控制代码执行的时间间隔。虽然它们在功能上有一定的相似性,但其实现的效果却大不相同。下面...
在JavaScript编程中,`setTimeout`和`setInterval`是两个非常重要的定时器函数,它们用于在特定的时间间隔后执行特定的代码。然而,当尝试使用它们来调用带有参数的函数时,可能会遇到一些问题。本文将深入探讨这两...
在 javascript 中,有两个重要的定时执行函数,即 setInterval 和 setTimeout。这两个函数都可以用来执行某个函数或表达式,但它们之间有一些关键的区别。 首先,让我们来看看 setInterval 函数。setInterval 函数...
在JavaScript中,通过setTimeout和setInterval函数执行代码块时,传递参数需要特别注意函数的引用和代码字符串的使用。推荐的做法是使用函数引用,并且在可能的情况下使用闭包来封装外部变量,以保证代码的安全性...
通过对 `setTimeout` 和 `setInterval` 的浏览器兼容性问题的分析,我们了解到在IE浏览器中,这两个函数不支持函数参数传递这一特性。针对这一问题,可以通过使用全局变量、字符串形式的表达式或者创建闭包的方式...
然而,原生的 `setTimeout` 和 `setInterval` 在处理参数时有一些限制,尤其是不能直接传递对象参数。为了解决这个问题,我们可以自定义这两个函数,使其支持传递参数和对象参数。 在提供的代码中,开发者创建了两...
本文将深入讲解JavaScript中的两个重要定时器函数:`setTimeout`和`setInterval`。 首先,`setTimeout`函数用于在指定延迟时间后执行一次函数或代码片段。其基本语法如下: ```javascript var timeoutID = window....
在网页开发中,JavaScript 提供了两种非常重要的方法来实现代码的定时执行,这两个方法分别是 setTimeout 和 setInterval。在本文中,我们将详细探讨这两个方法的定义、用法以及它们在实现定时功能方面的实例。 ###...
在使用setTimeout或setInterval时,如果函数需要参数,则不能直接使用函数名作为回调函数,因为这会导致函数立即执行。要解决这个问题,可以使用匿名函数或者函数封装的方法来正确地传递参数。 以setTimeout为例,...
在JavaScript编程中,window对象下的setTimeout和setInterval是两个非常重要的定时器方法,它们能够让某些函数延迟执行或者每隔一段时间重复执行。但是,由于这两个方法运行在一个由脚本宿主模拟出来的Timer线程中,...
关于在Vue中管理setTimeout和setInterval,尤其是涉及到Vue的路由切换时定时器未被销毁的问题,主要涉及到Vue的生命周期钩子、JavaScript的this关键字以及ES6箭头函数的特性。 首先,Vue中的生命周期钩子允许我们在...
在Web开发过程中,setInterval和setTimeout是两个非常常用的JavaScript函数,用于按照指定的周期执行代码或者延迟执行代码。为了确保代码的健壮性,有时候我们需要根据实际运行情况来停止这些定时任务,以下将详细...
这段代码通过检查浏览器特性,对 `setTimeout` 和 `setInterval` 进行了重写,使得在IE浏览器中也能正确地传递额外参数给回调函数。这里使用了 `Array.prototype.slice.call` 来获取 `arguments` 对象的数组形式,...
clearInterval() 函数的参数即 setInterval() 返回的 ID 值。 语法 setInterval(code,millisec[,”lang”])code 必需。要调用的函数或要执行的代码串。millisec 必须。周期性执行或调用 code 之间的时间间隔,以毫秒...
在JavaScript编程中,setTimeout和setInterval是用于控制代码在一定时间后执行或定期重复执行的两个非常有用的函数。这两个函数都是JavaScript的全局函数,可以在浏览器环境中直接使用,也可以在Node.js中使用。 ##...