一、arguments
arguments 该对象代表正在执行的函数和调用它的函数的参数
function test() {
if(arguments.length > 0) {
for(var v of arguments) {
console.log(v);
}
}
}
test(1, 2, 3);
1
2
3
二、callee
callee属性是 arguments 对象的一个成员,它表示对函数对象本身的引用,这有利于匿名函数的递归或者保证函数的封装性
function test() {
console.log(arguments.callee);
}
test();
运行结果
function test() {
console.log(arguments.callee.length);
}
三、caller
对于函数来说,caller属性只有在函数执行时才有定义。如果函数是由顶层调用的,那么 caller包含的就是 null 。如果在字符串上下文中使用 caller属性,那么结果和 functionName.toString 一样,也就是说,显示的是函数的反编译文本
function child() {
console.log(child.caller);
}
function parents() {
child();
}
parents();
运行结果
function parents() {
child();
}