在该代码段,trueFactorial(5)
返回120:函数声明VS函数表达引起不同的结果
function factorial(num) {
if (num <= 1) {
return 1;
} else {
return num * arguments.callee(num - 1);
}
}
var trueFactorial = factorial;
var factorial = function(num) {
return 0;
}
console.log(trueFactorial(5));
但在这个代码段,trueFactorial(5)
返回0
。
function factorial(num) {
if (num <= 1) {
return 1;
} else {
return num * arguments.callee(num - 1);
}
}
var trueFactorial = factorial;
function factorial(num) {
return 0;
}
console.log(trueFactorial(5));
唯一的区别是,我们通过在第一个片段变量赋值声明factorial
。这种差异的原因是什么?
了解吊装 – epascarello
@LarsPeterson - 所不同的是第11行,并在问题的标题解释。 – Quentin
@Quentin我现在看到它 –