zoukankan      html  css  js  c++  java
  • 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的定义

  • 相关阅读:
    从一个表中查数据,插入另一个表
    sql 字段字符串内容替换
    安装VS2010后,如何设置老版本的项目文件不是默认用VS2010打开
    题解 [JOI 2019 Final] 独特的城市
    题解 [JOI 2019 Final] 硬币收藏
    题解 [CF720A] Closing ceremony
    [学习笔记] Miller-Rabin 质数测试
    题解 [CF332C] Students' Revenge
    题解 [CF525D] Arthur and Walls
    SpringMVC-拦截器
  • 原文地址:https://www.cnblogs.com/makan/p/4710693.html
Copyright © 2011-2022 走看看