首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >超出最大调用堆栈大小错误

超出最大调用堆栈大小错误
EN

Stack Overflow用户
提问于 2011-05-23 17:49:48
回答 35查看 1.7M关注 0票数 644

我使用的是Direct Web Remoting (DWR) JavaScript库文件,并且只在Safari (桌面和iPad)中遇到错误。

上面写着

超出了

最大调用堆栈大小。

这个错误到底是什么意思,它会完全停止处理吗?

还有任何针对Safari浏览器的修复(实际上是在iPad Safari上,它说

JS:执行超时

我假设这是相同的调用堆栈问题)

EN

回答 35

Stack Overflow用户

回答已采纳

发布于 2011-05-23 18:05:44

这意味着在您的代码中的某个地方,您正在调用一个函数,而该函数又调用另一个函数,依此类推,直到您达到调用堆栈限制。

这几乎总是因为一个具有基本情况的递归函数没有得到满足。

查看堆栈

考虑下面的代码。

代码语言:javascript
复制
(function a() {
    a();
})();

下面是经过几次调用后的堆栈...

正如您所看到的,调用堆栈不断增长,直到达到一个限制:浏览器硬编码的堆栈大小或内存耗尽。

为了修复它,请确保您的递归函数具有能够满足的基本情况……

代码语言:javascript
复制
(function a(x) {
    // The following condition 
    // is the base case.
    if ( ! x) {
        return;
    }
    a(--x);
})(10);
票数 750
EN

Stack Overflow用户

发布于 2012-04-23 09:58:01

如果你不小心导入/嵌入了同一个JavaScript文件两次,你有时会得到这个错误,值得在检查器的资源标签中查看一下。

票数 92
EN

Stack Overflow用户

发布于 2016-08-14 07:55:36

在我的例子中,我发送的是输入元素,而不是它们的值:

代码语言:javascript
复制
$.post( '',{ registerName: $('#registerName') } )

而不是:

代码语言:javascript
复制
$.post( '',{ registerName: $('#registerName').val() } )

这冻结了我的Chrome标签,当页面变得没有响应时,它甚至没有显示‘等待/杀死’对话框。

票数 83
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6095530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档