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

  建议使用第三种方法。

转载于:https://www.cnblogs.com/wmhuang/p/4235173.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值