学习记录
arguments.callee的用法
// arguments.callee等于函数本身
var i = 0;// 执行次数
var a=(function(){
i++;
console.log("i am running..." + i);//输出执行次数
console.log(arguments.callee);//打印arguments.callee
return arguments.callee;//将arguments.callee返回给变量a
})();//()为自运行
a();//调用变量a
//执行结果:
//i am running...1
/*ƒ (){
i++;
console.log("i am running..." + i);
console.log(arguments.callee)
return arguments.callee;
}*/
//i am running...2
/*ƒ (){
i++;
console.log("i am running..." + i);
console.log(arguments.callee)
return arguments.callee;
}*/
实际应用
//计算a的阶乘
function jc(a){
if(a<=1){
return 1;
}else{
return a*arguments.callee(a-1);//等同于return a*jc(a);
}
}
console.log(jc(5))
//结果
//120
使用arguments.callee的好处在于函数名发生变化时,仍能正常执行该函数