——《JavaScript高级程序设计》第3版 P177
求阶乘的递归函数:
function fn(num){
if(num<=1){
return 1;
}else{
return num*fn(num-1);
}
}
将该函数赋值给另一个变量时:
var anotherFn = fn;
fn = null;
console.log(anotherFn(4)); // error:fn is not defined
改写:但严格模式会报错
function fn(num){
if(num<=1){
return 1;
}else{
return num*arguments.callee(num-1);
}
}
命名函数表达式:这样就没有问题了
var fn = (function f(num){
if(num<=1){
return 1;
}else{
return num*f(num-1);
}
});
为了便于理解,最好把整个命名函数用括号包起来。