callee是函数arguments对象内的指针,它指向当前的函数,使得在函数内部递归调用当前函数时,不需要调用函数名称,减少函数内部对于函数名的依赖
function test() {
console.log(arguments.callee);
}
test();
caller是函数的一个属性,它指向调用当前函数的函数,如果当前函数在其他函数内被调用,则返回调用它的那个函数,如果是在全局环境下被调用,则返回 null
我们可以利用caller的特性跟踪函数的调用链
function fn1() {
console.log(fn1.caller);
console.log(arguments.callee.caller);
}
function fn2() {
fn1()
}
fn2();