为什么下面的 javascript 阶乘函数在调用时会抛出堆栈溢出错误?
function fact(n) {
return function () {
var n = n;
return (n < 2) ? 1 : (n*fact(n - 1));
}();
};
当我删除 var n = n;
行时,它按预期工作。另外,我知道内部函数是多余的,它只是用来触发错误。
最佳答案
var n = n
在那种情况下有效地做了n = undefined
因为形式参数 n
和声明的n
来自不同的范围。在你的评论声明n
和形参 n
在相同的范围内,所以情况不同。
undefined < 2
总是假的,所以它一直调用fact
永远。
关于Javascript阶乘函数堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20905117/