为什么以下javascript factorial函数在调用时会抛出堆栈溢出错误?
function fact(n) {
return function () {
var n = n;
return (n < 2) ? 1 : (n*fact(n - 1));
}();
};
Run Code Online (Sandbox Code Playgroud)
当我删除该行时,var n = n;它按预期工作.另外,我知道内部函数是冗余的,它只是触发错误.
var n = n 在那种情况下有效地做了n = undefined因为形式参数n和声明n来自不同的范围.在您的注释声明n和形式参数n在相同的范围内,所以情况不同.
undefined < 2总是假的,所以它一直在呼唤fact.
| 归档时间: |
|
| 查看次数: |
222 次 |
| 最近记录: |