所谓递归函数,js递归函数调用自身时的保险方式。
例子,一个典型阶乘递归函数:
以下代码可导致出错:
由于fact已经不是函数了,所以出错。www.jb200.com
用arguments.callee可解决问题,这是一个指向正在执行的函数的指针。
改进后的js递归函数:
function fact(num){
if (num<=1){
return 1;
}else{
return num*arguments.callee(num-1); //此处更改了。
}
}
var anotherFact = fact;
fact = null;
alert(antherFact(4)); //结果为24.