setInterval或setTimeout作为调用句柄时不能传参的解决方案

1.采用字符串形式:

setInterval("foo(id)",1000);

2.匿名函数封装(推荐)

setInterval(functionz() {

  foo(id);

}, 1000);

3.定义返回无参函数的函数 

function foo(id) {

  console.log(id);

}

function _foo(id) {

  return function() {

    foo(id);

  }  

}

window.setInterval(_foo(id),1000); 

4.修改setInterval

function foo(id) {

  console.log(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(foo, 3000, '2013');

posted @ 2016-07-04 17:11  苜蓿m  阅读(221)  评论(0)    收藏  举报