一、属性 arguments.callee
arguments 的主要用途是保存函数参数,它这个对象有一个名叫 callee 的属性,该属性是一个指针,指向拥有这个 arguments 对象的函数。
- 如下的阶乘函数用到递归算法,需要函数自调用, 优化后的写法更灵活,如果我们要修改函数名不用关注到函数内部
function factorial(num){
if (num <=1) {
return 1;
} else {
// 这个函数的执行与函数名 factorial 紧紧耦合在了一起, 不太好。
return num * factorial(num-1)
}
}
// 优化后的写法
function factorial(num){
if (num <=1) {
return 1;
} else {
// 无论引用函数时使用的是什么名字,都可以保证正常完成递归调用
return num * arguments.callee(num-1)
}
}