In this code snippet, trueFactorial(5) returns 120:
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));
But in this code snippet, trueFactorial(5) returns 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));
The only difference is that we declared factorial through variable assignment in the first snippet. What is the reason for this difference?