基本上调用堆栈将开始弹出出功能一个调用一个何时弹出时最后在函数调用返回。但是,当我尝试创建一个更接近其最大尺寸的调用堆栈时,安全问题就会越来越严重。递归 - 调用堆栈失败测试的最大堆栈大小
//Code for testing the stack size
var cnt = 0;
function test(){
//Max stack size is nearer to ~41800
if(cnt++ == 41763){
console.log('finished');
return true;
}
return test();
}
test();
所以上面的代码抛出一个异常,我在铬版49.0.2623.112米像下面,
Uncaught exception
< true
请不就是上面的错误中没有任何消息。我的问题是,
堆栈中的最后一个函数调用返回了true
,这意味着堆栈大小没有被超过。为什么没有返回该堆栈中的其他函数调用?这个空白的异常信息是什么原因?这里
奇怪的是,如果我用较少的迭代运行此代码(即40763),则错误消失,直到页面刷新。 –
在Windows版本为v49.0.2623.87的Chrome上,出现* RangeError:超过最大调用堆栈大小*。并且返回true - 如果不是。 –
也许[this](https://www.safaribooksonline.com/library/view/high-performance-javascript/9781449382308/ch04s03.html)和[this](http://www.2ality.com/2014/04 /call-stack-size.html)有帮助吗? –