在非严格模式下:
主要通过arguments.callee实现递归,它是一个指向正在执行的函数的指针。
function factorial(num){
if(num <= 1){
return 1;
}else{
return num * arguments.callee(num - 1);
}
}
在严格模式下:
虽然访问arguments.callee这个属性会导致错误,但是可以使用函数表达式来达成相同的结果。
var factorial = function f(num){
if(num <= 1){
return 1;
}else{
return num * f(num-1);
}
};
本篇博客参考自JavaScript高级程序设计,[p177-p178]