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

新手上路,请多包涵

我正在使用 Direct Web Remoting (DWR) JavaScript 库文件,并且仅在 Safari(桌面和 iPad)中出现错误

它说

超出最大调用堆栈大小。

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

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

JS:执行超时

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

原文由 copenndthagen 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

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

这几乎总是因为具有未满足基本情况的递归函数。

查看堆栈

考虑这段代码…

 (function a() {
 a();
 })();

这是几次调用后的堆栈…

网络检查员

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

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

 (function a(x) {
 // The following condition
 // is the base case.
 if ( ! x) {
 return;
 }
 a(--x);
 })(10);

原文由 alex 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果你不小心两次导入/嵌入同一个 JavaScript 文件,有时你会得到这个,值得在检查器的资源选项卡中检查。

原文由 lucygenik 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题