javascript - 使用 Javascript 类函数进行 15 次递归后堆栈溢出

标签 javascript class recursion stack-overflow stackpanel

我有以下代码示例来说明我的观点。当我在 Vista 上的 IE8 中加载此文件时,出现错误“Stack Overfow at line:16”

如果我使用顶级函数(在 testClass 对象之外)进行递归,我可以递归数百万次而不会出现堆栈溢出。

为什么会发生这种情况?最终我只是实现了一个 Function Que 而不是使用递归,但这对我来说没有意义,我想了解原因。

--代码--

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
<html>
    <head>
        <title>Recusion Test</title>
        <body>
        </body>

        <script type="text/javascript">

            function testClass() {
                this.x = 15;
                this.recurse = function() {
                    this.x--;
                    this.recurse();
                }
            }

            var wtf = new testClass();
                wtf.recurse();

            alert('done');
        </script>
    </head>
</html>

最佳答案

递归语句没有终止条件,因此它将永远运行。

看来您想要...


            function testClass() {
                this.x = 15;
                this.recurse = function() {
                    if (this.x--)
                        this.recurse();
                }
            }

            var wtf = new testClass();
                wtf.recurse();

            alert('done');

关于javascript - 使用 Javascript 类函数进行 15 次递归后堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1539670/

相关文章:

javascript - 从用户获取颜色时无法使用 jQuery 更改文本颜色

javascript - 我不断收到此错误 "angular.js:TypeError: Cannot read property ' 页未定义”

Java - 从另一个类调用方法[错误]

Java:可能有相互的、最终的类引用吗?

.net - C#。检查 Type 是否为 .NET Framework,而不是我自己的类型

java - 在 JSP 页面上显示树

javascript - 发布 FormData 在 IE9 中不起作用

javascript - 使用 javascript 设置新的 onclick 属性不起作用

algorithm - 检查是否可以对二进制字符串进行分区,使得每个分区都是 5 的幂

java - 即使不满足条件,Java 是否完全了解整个递归方法?