argument爲函數內部對象,包含傳入函數的全部參數,arguments.callee表明函數名,多用於遞歸調用,防止函數執行與函數名牢牢耦合的現象,對於沒有函數名的匿名函數也很是起做用。舉例以下:函數
function factorial(num){ if(num<=1){ return 1; }else{ return num*arguments.callee(num-1); //arguments.callee表明factorial } } var trueFactorial = factorial; factorial = function(){ return 0; } alert(trueFactorial(5)); //結果爲120,由於js中函數沒有重載,因此若是遞歸調用時使用函數名,則執行最後一個該函數名的函數,即返回0 alert(factorial(5));//結果爲0
匿名函數的遞歸:對象
var num = (function(num){ if(num<=1){ return 1; }else{ return num*arguments.callee(num-1); } })(5); alert(num); //結果爲120