arguments
在javascript中每个函数都有一个隐藏的arguments对象引用这函数的实参;用数组下标的方式"[]"引用arguments的元素。
function test(x,y){
var num = 0;
for(var i = 0; i < arguments.length; i++){
num += arguments[i];
}
return num;
}
test(1,3,5); //9
arguments对象和函数是不能分开的,且不能显示创建,只有函数执行的时候才可用;
callee
callee是arguments对象的一个成员,用来返回一个正在被进行函数的引用。
function test(x,y){
console.log(arguments.callee.length,arguments.callee);
}
test(1,3,5);
输出结果:2 ƒ test(x,y){console.log(arguments.callee.length,arguments.callee);}
caller
caller与callee不同,caller属性并不属于arguments对象,它是函数对象的属性,Opera的早期版本不支持。caller 返回一个调用当前函数的引用 如果是由顶层调用的话 则返回null。
function test(){
console.log(test.caller);
}
function test2(){
test();
}
test2(); // 输出结果:ƒ test2(){test();}
test(); //输出结果:null