Javascript实例教程:JS典型阶乘递归函数

http://www.itjxue.com  2015-08-06 23:01  来源:未知  点击次数: 

来自js高级程序设计
一个典型阶乘递归函数:
function fact(num){
if (num<=1){
return 1;
}else{
return num*fact(num-1);
}
}

以下代码可导致出错:
var anotherFact = fact;
fact = null;
alert(antherFact(4)); //出错

由于fact已经不是函数了,所以出错。
用arguments.callee可解决问题,这是一个指向正在执行的函数的指针。
新的函数为:
function fact(num){
if (num<=1){
return 1;
}else{
return num*arguments.callee(num-1); //此处更改了。
}
}

var anotherFact = fact;
fact = null;
alert(antherFact(4)); //结果为24.

(责任编辑:IT教学网)

更多

推荐Javascript/Ajax文章