在該代碼段,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我現在看到它 –