最近在重新学习JavaScript红宝书,看到Function这一章正好记录一下,嘿嘿~
一、函数内部属性(callee)
在函数内部,有两个特殊的对象:arguments和this,arguments是一个类数组对象,包含着传入函数的所有参数,arguments还有个属性:callee,该属性是一个指针,指向正在执行的函数,最经典的应用就是函数递归:
function factorial(num) {
if(num<=1){
return 1;
} else {
return num*arguments.callee(num-1);
}
}
但这种方式有个问题,在严格模式下,不能通过脚本访问arguments.callee,会报错,这时就需要使用另外一种方式了:
var factorial = (function f(num){
if(num<=1){
return 1;
} else {
return num*f(num-1);
}
})