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的定义

  • 相关阅读:
    Leetcode题库——40.组合总和II
    (课)阅读笔记3_1
    (课)学习进度报告十
    (课)赛题的需求分析
    (课)阅读笔记2_3
    (课)学习进度报告九
    (课)学习进度报告八
    (tensorflow计算)如何查看tensorflow计算用的是CPU还是GPU
    (课)阅读笔记2_2
    (课)温昱 第三部分Refined Architecture阶段 总结
  • 原文地址:https://www.cnblogs.com/makan/p/4710693.html
Copyright © 2011-2022 走看看