Javascript阶乘函数堆栈溢出

标签 javascript

为什么下面的 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/

相关文章:

javascript - 如何使用 JavaScript 选择用户可以切换到的所有 html 元素?

javascript - 尝试压缩 JavaScript/jQuery 代码

javascript - 使用 JQuery 将 JSON 数组数据的选择打印到页面

javascript - 类型 'xxx' 上不存在属性 '{}'

javascript - 从不同的 Controller 更新 ng-show

javascript - 使用 JavaScript 在 Android 中显示来自 HTML 的图片

javascript - 当现有的谷歌标记移动到另一个地方时,如何更新新的纬度和经度

javascript - 使用 Javascript 对文本区域和输入进行计数

javascript - 竞争条件导致 Highcharts 错误 #13

JavaScript 从数组简单登录