尽管变量有值,函数 returns 仍未定义

Function returns undefined despite the variable having a value

这是代码。你可以自己测试一下。

请解释:)

var factorial = 1;

function factorialize(num) {
  factorial *= num;

   if (num == 1) {
     var result = factorial;

     return result;
   }

   factorialize(num-1);

}

factorialize(5);

不需要全局变量,也不需要局部变量。

function factorialize(num) {
    if (num === 1) {
        return 1;
    }
    return num * factorialize(num - 1);
}

console.log(factorialize(5));

// or a very short version:
function f(n) { return +!~-n || n * f(n - 1); }

console.log(f(10)); 

如果你使用递归,你不需要一些变量。这是关于递归最有趣的事情之一。

看看这个更短的递归解决方案:

function factorial(n)
{
    return (n === 1) ? 1 : n * factorial(n - 1);
}

for (var i = 1; i <= 7; i++)
    document.getElementById("myDiv").innerHTML += (i + "! = " + factorial(i) + "<br/>");
<div id="myDiv">
</div>