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; }