JS 之函数内部属性 arguments.callee

256 阅读1分钟

一、属性 arguments.callee

arguments 的主要用途是保存函数参数,它这个对象有一个名叫 callee 的属性,该属性是一个指针,指向拥有这个 arguments 对象的函数。

  1. 如下的阶乘函数用到递归算法,需要函数自调用, 优化后的写法更灵活,如果我们要修改函数名不用关注到函数内部
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) 
     } 
}