更新时间:2022-10-15 15:46:14
这是几乎总是因为递归函数的基本情况没有得到满足。
考虑这个代码...
(function a(){
a();
})();
这是几个电话后的堆栈...
你可以看到,调用堆栈增长,直到它达到一个限制:浏览器硬编码堆栈大小或内存耗尽。
为了解决这个问题,确保递归函数具有一个可以满足的基本情况...
(function a(x){
// The以下条件
//是基本情况
if(!x){
return;
}
a( - x);
}) (10);
I am using a Direct Web Remoting (DWR) JavaScript library file and am getting an error only in Safari (desktop and iPad)
It says
Maximum call stack size exceeded.
What exactly does this error mean and does it stop processing completely?
Also any fix for Safari
browser (Actually on the iPad Safari
, it says
JS:execution exceeded timeout
which I am assuming is the same call stack issue)
It means that somewhere in your code, you are calling a function which in turn calls another function and so forth, until you hit the call stack limit.
This is almost always because of a recursive function with a base case that isn't being met.
Consider this code...
(function a() {
a();
})();
Here is the stack after a handful of calls...
As you can see, the call stack grows until it hits a limit: the browser hardcoded stack size or memory exhaustion.
In order to fix it, ensure that your recursive function has a base case which is able to be met...
(function a(x) {
// The following condition
// is the base case.
if ( ! x) {
return;
}
a(--x);
})(10);