arguments.callee 的使用

先阅读以下递归代码

function fn(num){
    if(num <= 1){
        return 1;
    }else{
        return num * fn(num - 1)
    }
}
var b = fn
fn = null

b(4) // 报错

通过arguments.callee代替函数名

function fn(num){
    if(num <= 1){
        return 1;
    }else{
        return num * arguments.callee(num - 1)
    }
}
var b = fn
fn = null
b(4) //24

来看看打印出arguments.callee是怎样的 ?

function fun() {
    console.log(arguments.callee);
}
fun();
//VM52:2 ƒ fun() {
//  console.log(arguments.callee);
//}

你可能感兴趣的:(arguments.callee 的使用)