通常setTimeout中的參數爲函數
setTimeout(f,time)
可是若是我想要給f函數傳入一個參數怎麼辦
setTimeout(f(arguments),time)spa
若是我這樣寫的話,那麼time就不起做用了,f函數會當即執行,由於函數名後跟圓括號code
1、讓f(arguments)返回一個無參函數
function f(arguments){
return function(){
ff(arguments);
}
}
這樣雖然f(arguments)當即執行了,執行後也只是一個無參函數,而後在ff(arguments)中寫入真正想要調用的函數
最終代碼爲:blog
setTimeout(f(arguments),time); function f(arguments){ return function(){ ff(arguments); } } function ff(arguments){ // do something; }
2、將第一個參數寫成函數定義,其實和一的本質是同樣的io
setTimeout(function(){ff(arguments);},time); 也能夠是 setTimeout(function a(){ff(arguments);},time); function ff(arguments){ // do something; }