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

我正在使用DirectWebRemoting(DWR)JavaScript库文件,但只在Safari(桌面和iPad)中出错

上面说

超出了最大调用堆栈大小

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

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

JS:执行超时

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

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

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

查看堆栈

考虑一下这个代码

(函数a(){
a();
})();

这是经过几次调用后的堆栈

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

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

(函数a(x){
//以下情况
//这是基本情况。
如果(!x){
回来
}
a(--x);
})(10);

发表评论