码迷,mamicode.com
首页 > 其他好文 > 详细

caller和callee的区别

时间:2015-07-21 16:53:22      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:

①、caller
    caller返回一个函数的引用,这个函数调用了当前的函数。
    使用这个属性要注意:
    1 这个属性只有当函数在执行时才有用
    2 如果在javascript程序中,函数是由顶层调用的,则返回null

    functionName.caller: functionName是当前正在执行的函数。
     例子1: 复制代码 代码如下:
    
       var a = function() { 
            alert(a.caller); 
          } 
    var b = function() { 
              a(); 
          } 
          b();
          上面的代码中,b调用了a,那么a.caller返回的是b的引用,结果如下: 
                技术分享
           例子2:返回NULL  
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script type="text/javascript">
            var a = function(){
                alert(a.caller);
            }
            a();
        </script>
    </head>
    <body>
    </body>
</html>

②、callee

  callee返回正在执行的函数本身的引用,它是arguments的一个属性
  使用callee时要注意:
    1 这个属性只有在函数执行时才有效
    2 它有一个length属性,可以用来获得形参的个数,因此可以用来比较形参和实参个数是否一致,即比较arguments.length是否等于arguments.callee.length
    3 它可以用来递归匿名函数。

           例子1:返回函数本身的引用

    var a = function() {
          alert(arguments.callee);
        }
    var b = function() {
          a();
        }
        b();

           a在b中被调用,但是它返回了a本身的引用,结果如下:

    技术分享

    例子2:获取函数的形参

                技术分享
 
总结:caller是返回调用该函数的引用
         callee是返回本身自己的函数
          

caller和callee的区别

标签:

原文地址:http://www.cnblogs.com/rookieCat/p/4664809.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!