setInterval(code, time)中code传递参数办法
1.使用setInterval的场景
有时我们需要隔一定的时间执行一个方法,这时就会用到setInterval,但是由于这个方法是浏览器模拟出的Timer线程,在调用我们方法时不能为其传递参数。
2.setInterval传递参数办法
(1)采用string literals形式
setInterval("interval(param)",1000);
缺点:param必须是全局变量(即window对象上的变量),参数不能被周期性改变
(2)匿名函数包装
window.setInterval(function()
{
interval(param);
}, 1000);
function interval(args){
// TODO code
}
优点:周期性执行interval(param),且把变量param传递进去,param可以是局部变量
(3)闭包
window.setInterval(wrapper(params), 1000);
function wrapper(args){
return function() {
var params = args;
// TODO code
}
}
优点:利用闭包传参,简洁、思路清晰
(4)修改setInterval函数本身
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(interval,1000,arg);
缺点:永久性修改setInterval函数,不可逆
3. 个人推荐
建议使用第三种方法。