IE での Javascript スタック オーバーフローの問題のトラブルシューティング
JavaScript のスタック オーバーフロー エラーは、特にサードパーティ ライブラリで予期しない動作が発生した場合にイライラすることがあります。 。 IE ブラウザは、他のブラウザに比べてスタック制限が低いことで知られています。これは、IE8 のスタック制限が約 3200 であることを示す簡単なテスト スクリプトで実証されています。
スタック オーバーフローの原因を特定するには、トレースすることが不可欠です。例外につながる関数呼び出しのチェーン。残念ながら、JavaScript は詳細なスタック トレースのネイティブ サポートを提供していないため、原因となる関数を特定することが困難です。ただし、例外を発生させた関数に関する限られた情報を取得する手法はあります。
1 つの手法では、スタック オーバーフローをトリガーする前に再帰関数が呼び出される回数をカウントするようにテスト スクリプトを変更します。 catch ブロック内のカウントを手動でインクリメントすることで、現在のブラウザーの最大スタック深度を推定できます。
<code class="js">var i = 0; function inc() { i++; inc(); } try { inc(); } catch(e) { // The StackOverflow sandbox adds one frame that is not being counted by this code // Incrementing once manually i++; console.log('Maximum stack size is', i, 'in your current browser'); }</code>
このメソッドは、オーバーフローが発生したスタック深度の大まかな近似値を提供します。内部の最適化と構成により、ブラウザーごとに報告されるスタックの深さがわずかに異なる場合があることに注意することが重要です。
以上がIE での Javascript スタック オーバーフロー エラーを特定してトラブルシューティングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。