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