setTimeout 传参

一般setTimeout中的参数为

   setTimeout(f,time)
但是如果我想要给f函数传入一个参数怎么办
  setTimeout(f(arguments),time)

如果我这样写的话,那么time就不起作用了,f函数会立即执行,因为函数名后跟圆括号


一、让f(arguments)返回一个无参函数
function f(arguments){
  return function(){
    ff(arguments);
  }
}
这样虽然f(arguments)立即执行了,执行后也只是一个无参函数,然后在ff(arguments)中写入真正想要调用的函数
最终代码为:

setTimeout(f(arguments),time);
function f(arguments){
  return function(){
    ff(arguments);
  }
}
function ff(arguments){
  // do something;
}


二、将第一个参数写成函数定义,其实和一的本质是一样的

setTimeout(function(){ff(arguments);},time); 也可以是  setTimeout(function a(){ff(arguments);},time);
function ff(arguments){
  // do something;
}
原文地址:https://www.cnblogs.com/YangqinCao/p/5744181.html