JavaScript 之 callee / caller

callee

首先说一下argument;

arguments 是类数组对象,是一种特殊的对象,里面装有函数的实参列表,它的属性名是按照传入参数的序列来的

大家都知道,对象都会有属性,那么callee 就是 arguments 的一个属性。

arguments.callee 指的是函数的引用(也就是函数自己)。

//eg:   
function test(){
            console.log(arguments.callee);
        }
        test();

结果:


    // 计算100!
                 var num = (function (n){
                     if(n == 1){
                         return 1;
                     }
                     return n*arguments.callee(n-1);
                 }(100))
        // 立即执行函数一般没有函数名,(因为执行后立即销毁,有函数名也没啥用)
        // 所以要想调用出原型必须的用 arguments.callee

caller

caller是函数的属性。它指向函数所调用的环境。

  function test(){
            demo();
        }
        function demo(){
            console.log(demo.caller);
        }
        test();

打印结果:



在es5.0 的标准模式下不能用callee 和 caller

阅读更多

没有更多推荐了,返回首页