zoukankan      html  css  js  c++  java
  • caller和callee的区别

    ①、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是返回本身自己的函数
              
    just do myself
  • 相关阅读:
    BZOJ4722 由乃
    LOJ6043 「雅礼集训 2017 Day7」蛐蛐国的修墙方案
    Luogu P2414 [NOI2011]阿狸的打字机
    Luogu P3193 [HNOI2008]GT考试
    Luogu P3167 [CQOI2014]通配符匹配
    Luogu P4503 [CTSC2014]企鹅QQ
    Luogu P5446 [THUPC2018]绿绿和串串
    Luogu P5329 [SNOI2019]字符串
    免密码ssh2登录
    mooon模板的automake、autoconf、m4和libtool版本信息
  • 原文地址:https://www.cnblogs.com/rookieCat/p/4664809.html
Copyright © 2011-2022 走看看