关键看 var trueFactorial = factorial; 的位置,而 factorial = function() {return 0;} 的 函数无法提前,调用只能在函数之后调用
function factorial(num) {
if (num <= 1) {
return 1;
} else {
return num * arguments.callee(num - 1);
}
}
var trueFactorial = factorial; alert(trueFactorial(5)); //120
factorial = function() {
return 0;
} alert(trueFactorial(5)); // 120 如果没有使用 arguments.callee,将返回 0
var factorial = function() {
return 0;
}
var trueFactorial = factorial; alert(trueFactorial(5)); //0
function factorial(num) {
if (num <= 1) {
return 1;
} else {
return num * arguments.callee(num - 1);
}
} alert(trueFactorial(5)); // 0
var trueFactorial = factorial; alert(trueFactorial(5)); //120
var factorial = function() {
return 0;
}
function factorial(num) {
if (num <= 1) {
return 1;
} else {
return num * arguments.callee(num - 1);
}
} alert(trueFactorial(5)); // 120
来源: http://www.qdfuns.com/notes/44155/65551fc9e53aa7f7027810c35a72c40a.html