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

  • 相关阅读:
    Python自动化开发-基础语法
    Python自动化开发-简介
    Hello World!
    Mongo导出数据文件导致错误 Got signal: 6 (Aborted)解决方法
    PHP快速排序及其时间复杂度
    PHP读某一个目录下所有文件和文件夹
    PHP获得两个绝对路径的相对路径
    awk神器
    PHP使用Mysql事务
    PHP使用session_set_save_handler陷阱
  • 原文地址:https://www.cnblogs.com/makan/p/4710693.html
Copyright © 2011-2022 走看看