最大调用堆栈大小超过错误
我正在使用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);
如果你不小心导入/嵌入了相同的JS文件两次,你有时可以得到这个,值得在检查员的资源标签中检查:)
在我的情况下,我发送输入元素而不是它们的值:
$.post( '',{ registerName: $('#registerName') } )
代替:
$.post( '',{ registerName: $('#registerName').val() } )
这使我的Chrome标签冻结,甚至在页面无响应时甚至向我显示“等待/杀死”对话框。
链接地址: http://www.djcxy.com/p/14085.html上一篇: Maximum call stack size exceeded error
下一篇: How do you implement a Stack and a Queue in JavaScript?