クライアント側の Javascript スタック オーバーフローの問題は、特に IE で蔓延しており、ブラウザのスタック サイズが制限されていることが原因で発生する可能性があります。 Firefox や Chrome などの他のブラウザ。この制限により、スタック スペース不足により関数が実行中に中断する可能性があります。
スタック サイズの制限を説明するには、次のコードを考えてみましょう。
<code class="html"><script type="text/javascript"> function doSomething() { var i = 3200; doSomethingElse(i); } function doSomethingElse(i) { if (i == 0) return -1; doSomethingElse(i - 1); } doSomething(); </script></code>
このコードは IE で実行すると、 i = 3200 付近でスタック オーバーフロー例外が発生しますが、Chrome や Firefox などのブラウザは非常に深い再帰を処理できます。
スタック オーバーフローの原因となっている関数を特定し、スタック トレースを取得するには、簡単なテストを実行できます。
<code class="javascript">var i = 0; function inc() { i++; inc(); } try { inc(); } catch (e) { // Adjust for the StackOverflow sandbox's additional frame i++; console.log('Maximum stack size is', i, 'in your current browser'); }</code>
このテストでは、スタック オーバーフローが発生するまで inc 関数を段階的に呼び出します。例外がキャッチされたときに i の値をログに記録することで、最大スタック サイズを決定できます。
以上がブラウザーの JavaScript スタック サイズ制限は関数の実行にどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。