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