在此代码片段中,trueFactorial(5)
返回 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));
但在此代码片段中,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
。造成这种差异的原因是什么?
最佳答案
函数声明被提升。变量赋值则不然。
在示例一中,您将第一个函数分配给 trueFactorial
。
在示例二中,第二个函数被提升,因此它被分配给 trueFactorial
。
关于javascript - 函数声明与函数表达式导致不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46343676/