我正在使用一个Direct Web Remoting(DWR)的JavaScript库文件,但只在Safari(桌面和iPad)中得到一个错误。
它说
超过了最大的调用堆栈大小。
这个错误到底是什么意思,它是否会完全停止处理?
还有,对 "Safari "浏览器的任何修复(实际上在 "iPad Safari "上,它说
JS:执行超时
我想这也是调用堆栈的问题)
这意味着在你的代码中的某个地方,你正在调用一个函数,而这个函数又调用另一个函数,以此类推,直到你达到调用栈的极限。
这几乎总是因为一个递归函数的基本情况没有被满足。
考虑一下这段代码...
(function a() {
a();
})();
这里是经过少量调用后的堆栈...
正如你所看到的,调用堆栈不断增长,直到遇到一个限制:浏览器硬编码的堆栈大小或内存耗尽。
为了解决这个问题,请确保你的递归函数有一个能够满足的基本情况...
(function a(x) {
// The following condition
// is the base case.
if ( ! x) {
return;
}
a(--x);
})(10);