码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript中callee,caller,argument的理解

时间:2015-08-07 14:39:18      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

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

 

 

JavaScript中callee,caller,argument的理解

标签:

原文地址:http://www.cnblogs.com/makan/p/4710693.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!