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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM