网站地图    收藏   

主页 > 前端 > javascript >

js arguments.callee实现匿名函数的递归

来源:自学PHP网    时间:2023-02-27 11:32 作者: 阅读:

[导读] 小编今天来给各位同学介绍js arguments.callee实现匿名函数的递归具体操作方法与实例,有需要了解的朋友可参考参考。...


实现递归的算法大家都是很熟悉的,比如一个求0到n的和的递归函数如下:


 代码如下 复制代码

var fn=function(n){
        if(n>0) return n+fn(n-1);
        return 0;
    }
 alert(fn(10))


当然这是一个很简单的函数,如果在一个很复杂的程序中我们可能只需要调用一次该函数,为了函数的精简我们当然要努力较少函数名的定义,这是很自然会想到用匿名函数来直接执行。但是如果是匿名函数如何实现递归?arguments.callee正好派上用场,他指代的就是当前执行的函数的引用。


利用匿名函数实现的递归如下:


 代码如下 复制代码

var s=(function(n){
        if(n>0) return n+arguments.callee(n-1);
        return 0;
    })(10);
alert(s)


arguments.callee()是一个指针,指向拥有这个arguments的函数!其应用在经典的阶乘函数中可以体现出来:


 代码如下 复制代码

<script type="text/javascript">
 //阶乘函数
 function factorial(num){    //factorial只是指向该执行环境前端变量对象的一个指针
     if(num<1){   
         return 1
     }else{   
         return num*arguments.callee(num-1);//callee属性是一个指针,指向拥有这个arguments的函数
     }
 }
 var anotherFunc=factorial;
 factorial=function(){    //变量factorial,引用类型值,指向内存中另一个变量对象,非原先的变量对象
     return "abc";
 }
 //function factorial(){    //区别于上面的函数表达式,修改的是原先的变量对象,会直接影响到anotherFunc
 //    return "abc";
 /


自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论