递归

1
2
3
4
5
6
7
8
9
10
function factorial(num) {
if(num <= 1){
return 1;
} else {
return num * factorial(num-1);
}
};
var anotherFactorial = factorial;
factorial = null;
alert(anotherFactorial(4)); //Uncaught TypeError: factorial is not a function

arguments.callee是一个指向正在执行的函数的指针,可以用它实现对函数的递归调用。

1
2
3
4
5
6
7
8
9
10
function factorial(num) {
if(num <= 1){
return 1;
} else {
return num * arguments.callee(num-1);
}
};
var anotherFactorial = factorial;
factorial = null;
alert(anotherFactorial(4)); //24