百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>JS教程> js arguments.callee实现匿名函数的递归
分享文章到:

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

发布时间:01/15 来源: 浏览: 关键词:
小编今天来给各位同学介绍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";
 / 打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有4人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板