基本上調用堆棧將開始彈出出功能一個調用一個何時彈出時最後在函數調用返回。但是,當我嘗試創建一個更接近其最大尺寸的調用堆棧時,安全問題就會越來越嚴重。遞歸 - 調用堆棧失敗測試的最大堆棧大小
//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)有幫助嗎? –