Js中caller和callee的区别

代码实例

funA();
function funA(){
   console.log("funA.caller",funA.caller);
   console.log("argumnets.callee",arguments.callee);
}
function funB(){
    funA()
}
funB();

运行结果:


Js中caller和callee的区别_第1张图片
image.png

由上述的运行结果可以得出:

caller是通过函数来调用,返回的是该函数的调用环境,也就是调用栈的最顶层当最顶层为全局作用域时返回的是null
callee是通过arguments对象来调用,返回的是执行时的函数环境,通常用于匿名函数递归调用自身。
callee有个length属性,代表形参的长度

 var c = function(x,y) {
             console.log(arguments.length,arguments.callee.length,arguments.callee)
      } ;
     c(1,2,3) ;//输出3 2 function(x,y) {console.log(arguments.length,arguments.callee.length,arguments.callee)}

你可能感兴趣的:(Js中caller和callee的区别)