小编典典

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

all

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

它说

超出最大调用堆栈大小。

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

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

JS:执行超时

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


阅读 102

收藏
2022-03-04

共1个答案

小编典典

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

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

查看堆栈

考虑这段代码…

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

这是几次调用后的堆栈…

网络检查员

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

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

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