主页 > 前端 > javascript >
来源:自学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