来看一个经典的递归函数
function factorical(num){
if(num <= 1){
return 1;
}else{
return num * factorical(num - 1);
}
}
一般情况下这个递归函数是不会出错的,但是看下面一种情况:
var anthorFunction = factorical;
factorical = null;
anthorFunction(4);//这里是会出错的
因为指向原函数的指针就剩下一个,factorical已经不指向原函数,在函数体里调用时出错,如何避免这种情况,
可以使用arguments.callee()来代替函数名,就像这样 return num * arguments.callee(num -1);
本文探讨了一个经典的递归函数实现阶乘的例子,并指出当原始函数引用被清除后可能导致的问题。为解决这一问题,文章介绍了使用 arguments.callee 方法来替代直接函数名调用的方式。
383

被折叠的 条评论
为什么被折叠?



