arguments.callee的用法

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
相關文章
相關標籤/搜索