IEブラウザーで、これはいくつかの関数呼び出しを行うサードパーティライブラリ内で発生し、何らかの理由で時々IEはスタック制限が低いためのみです。
次に、いくつかのブラウザーのスタックサイズ制限をテストするために小さなテストHTMLをコーディングし、IE 7の実際のスタック制限はFF 7またはChrome 14とWindows 7のラップトップで比較した場合OS、8Gb RAM:
<html>
<body>
<!-- begin Script: -->
<script type="text/javascript">
function doSomething(){
var i = 3200;
doSomethingElse(i);
}
function doSomethingElse(i){
if (i == 0) return -1;
doSomethingElse(i-1);
}
doSomething();
</script>
<!-- END OF PAGE -->
</body>
</html>
IEは、値が3200前後の場合にスタックオーバーフローを引き起こし、FirefoxおよびChromeはIEと比較して非常に深い再帰を処理できます。
IEまたは他のブラウザで実行中にそれを発生させたJavascript関数とスタックオーバーフロー例外を結び付ける方法があるかどうか、それがチェーンとスタックトレースを与えることができるかどうかを知りたいエラーが発生した時点でのスタック内の機能。
簡単なテスト を使用:
var i=0;
function inc() {
i++;
inc();
}
inc();
質問に関しては、ブラウザの開発者ツールを使用してスタックを確認してください。 In IE 8+、ヒット F12、[スクリプト]タブに移動し、[デバッグの開始]をクリックします。例外がスローされると中断し、コールスタックを確認できます。 Chromeのデベロッパーツールを使用することもできますが、 Ctrl+Shift+J。
これはブラウザ固有であり、スタックサイズだけでなく、最適化(末尾再帰の最適化など)も行います。ここで唯一信頼できることは、大量のスタックをスタックに入れない方法でコーディングすること、または各ブラウザーを手動でテストすることです(ドキュメントの詳細を読む)。結局のところ、「再帰が多すぎる」などのエラーが表示された場合、コードに実際に問題があることが既にわかっています。