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. 个人推荐

  建议使用第三种方法。

posted @ 2015-01-20 08:39  Young Dreamer  阅读(1143)  评论(0编辑  收藏  举报