zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    游标、动态sql、异常
    定义declare、%TYPE%、ROWTYPE、加循环
    存储过程
    游标
    异常
    常用的sql语句(转)
    MVC的理解
    模拟struts2
    结构化分析方法
    Maven常用命令
  • 原文地址:https://www.cnblogs.com/lmy2016/p/6087872.html
Copyright © 2011-2022 走看看