• JavaScript中callee,caller,argument的理解


    argument代表当前函数的参数数组;

    1、callee的用法:

    argument.callee表示谁引用的这个函数

    其他解释:(arguments.callee表示引用当前正在执行的函数,或者说是调用arguments.callee的函数对象的引用,它给匿名函数提供了一种自我引用的方式。通过如下例子,可以更好的理解概念。)

    例如:var fun=function(){

      console.log(fun===argument.callee)

    }

    fun();   //true;

    执行上述代码,可以看到alter出来的结果是true,注意,此处用的是“===”,就是说func与arguments.callee对象类型和值都相等。

    用在递归上,例如:

    var r2=(function(n){

      if(n>1){

        return n*argument.callee(n-1);

      }else{

        return 1;

      }

    })(n)

     2、caller的用法:

    返回一个函数的引用,该函数调用了当前函数

    functionName.claaer

    functionName 对象是所执行函数的名称

    对于函数来说,claller只有在函数被调用时才有定义,如果函数是有顶层调用的,那么caller包含的就是null,如果在字符串上下文中调用,那么caller属性,那么结果和 functionName.toString 一样,也就是说,显示的是函数的反编译文本。

    代码

    Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->// caller demo {
    function callerDemo() {
    if (callerDemo.caller) {
    var a= callerDemo.caller.toString();
    alert(a);
    } else {
    alert("this is a top function");
    }
    }
    function handleCaller() {
    callerDemo();
    }

    handleCaller();//弹出handleCaller的定义

  • 相关阅读:
    python函数名和左括号之间不能有空格
    linux版本选择
    filter_map
    awk统计总结
    Spring Boot + Redis 实现各种操作
    手机号正则校验
    判断windows系统
    Redis分布式锁
    shell 脚本快速部署 SpringBoot 项目
    Java主流的Http请求--原生的HttpURLConnection
  • 原文地址:https://www.cnblogs.com/makan/p/4710693.html
Copyright © 2020-2023  润新知