最大コールスタックサイズ超過エラー 質問する

最大コールスタックサイズ超過エラー 質問する

Direct Web Remoting (DWR) JavaScript ライブラリ ファイルを使用していますが、Safari (デスクトップおよび iPad) でのみエラーが発生します。

それは言う

最大呼び出しスタック サイズを超えました。

このエラーは正確には何を意味し、処理が完全に停止するのでしょうか?

Safariまた、ブラウザの修正(実際にはiPad Safari

JS:実行がタイムアウトを超えました

これは同じコールスタックの問題であると想定しています)

ベストアンサー1

これは、コードのどこかで関数を呼び出し、その関数がさらに別の関数を呼び出すという動作を、呼び出しスタックの制限に達するまで繰り返すことを意味します。

これはほとんどの場合、満たされていない基本ケースを持つ再帰関数が原因です。

スタックの表示

このコードを検討してください...

(function a() {
    a();
})();

数回の呼び出し後のスタックは次のとおりです...

ウェブインスペクタ

ご覧のとおり、呼び出しスタックは、ブラウザにハードコードされたスタック サイズまたはメモリ不足という制限に達するまで増加します。

これを修正するには、再帰関数に満たすことができる基本ケースがあることを確認します...

(function a(x) {
    // The following condition 
    // is the base case.
    if ( ! x) {
        return;
    }
    a(--x);
})(10);

おすすめ記事