使用arguments对象写阶层函数

在函数内部有两个特殊的对象:arguments和this。其中arguments对象包含着传入函数中的所有参数,还有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数。

常规方法

1
2
3
4
5
6
7
function factorial (num) {
if (num <= 1) {
return 1;
} else {
return num * factorial(num - 1);
}
}

使用arguments对象的callee属性

1
2
3
4
5
6
7
function factorial (num) {
if (num <= 1) {
return 1;
} else {
return num * arguments.callee(num - 1);
}
}

详见:js高级程序设计(第三版)113页