转载

setInterval/setTimeout调用带参数函数方法

在写轮播图,为了复用性高,所以携程函数形式调用,后来才发现setInterval/setTimeout使用函数名作为调用句柄时,不能有参数否则就会立即执行,后预期结果差异很大。所以就特地网上查资料得到以下方案:

  1.         setInterval(lunboFn(mainPicList,oPicChilds,1014),3000);
复制代码

但是会立即执行。查看源码就可以知道原因了,同时也会知道setInterval(lunboFn(),3000)、setInterval(“lunboFn()”,3000);也都是错的;

以下demo均自己所写,转载注明 方案一:匿名函数包装 window.setInterval(function() { lunboFn(mainPicList,oPicChilds,1014); }, 1000);


方案二:定义返回无参函数的函数

  1. function lunboFn(oList, listPics, picWidth) {
  2.         code
  3. }
  4. //下面函数用于接收一个参数,并返回一个不带参数的函数,在这个函数内部使用了外部函数的参数,从而对其调用,不需要使用参数。
  5. function _lunboFn(oList, listPics, picWidth){
  6.         return function(){
  7.                 lunboFn(oList, listPics, picWidth);
  8.         }
  9. }
复制代码

方案三:修改setInterval

此处不推荐,故不写;

来源:前端网

正文到此结束
Loading...