JavaScript での最大呼び出しスタック サイズ超過エラー |説明した

Javascript Deno Zui Da Hubi Chushisutakku Saizu Chao Guoera Shuo Mingshita



再帰関数は、別のメソッド内でメソッドを呼び出す関数です。ただし、無限再帰ではスタック サイズ エラーが発生します。保留中のリクエストが多いため、スタック サイズ エラーが発生します。この問題は、関数自体を呼び出すときに発生します。それを考慮して、この記事では JavaScript で最大コール スタック サイズがエラーを超えることを説明します。さらに、エラーを解決するためのソリューションも提供されています。

この記事は次のように役立ちます。







  • JavaScript の最大呼び出しスタック サイズ超過エラー
  • if 条件を使用して最大呼び出しスタック サイズを超えたエラーを解決する
  • for ループを使用して、最大呼び出しスタック サイズを超えたエラーを解決します。

JavaScript の最大呼び出しスタック サイズ超過エラー

ユーザーが再帰関数を呼び出すと、スタック サイズ超過エラーが発生します。このタイプのエラーは、メソッドを繰り返し呼び出すために発生します。の fun_user() 関数内で再帰呼び出しとして利用されます fun_user() JavaScript で、コンソール ウィンドウにエラーを生成します。



コード



console.log ( 「最大呼び出しスタック サイズを超えました」 ) ;
fun_user ( ) ;
関数 fun_user ( )
{
fun_user ( ) ;
}





このコードでは、 「最大コールスタックサイズ超過エラー」 メソッドを呼び出すことで生成される 「fun_user()」 関数内。



コードはエラーを次のように表示します 「RangeError: 最大呼び出しスタック サイズを超えました。」

このエラーを解決するには、次のような多くの方法があります。 for ループ 条件文 、関数呼び出しを制限するために使用できます。

解決策 1: if 条件を使用して最大呼び出しスタック サイズを超えたエラーを解決する

このエラーを解決するには、if 条件を適用して JavaScript のスタック サイズを制限します。たとえば、コードは次のとおりです。

コード

だった = 1 ;
fun_user ( ) ;
関数 fun_user ( ) {
もしも ( < = 10 )
{
console.log ( 「JavaScript へようこそ」 ) ;
=i+ 1 ;
fun_user ( ) ;
} }

コードの説明は次のとおりです。

  • まず、変数 '私' 値 1 で初期化されます。
  • その後、 fun_user() メソッドは、変数を渡すことによって採用されます '私'。
  • この関数では、反復を制限する条件が適用された場合 10 .
  • 最後に、メッセージ 「JavaScript へようこそ」 を使用して表示されます。 「コンソール.ログ()」 方法。

出力

解決策 2: for ループを使用して最大呼び出しスタック サイズ超過エラーを解決する

このエラーを解決するには、for ループを使用して JavaScript の反復を制限します。たとえば、コードは次のとおりです。

コード

させて 出力 = 0 ;
為に ( させて 私= 5 ;私 > 0 ;私 - )
{
出力 += 追加 ( 1 1 ) ;
}
関数 追加 ( a、b ) {
戻る + b;
}
console.log ( 出力 ) ;

このコードでは:

  • 変数 '出力' 値 0 で初期化されます。
  • その後、for ループを使用して 5 回の反復を実行します。このループでは、 追加() メソッドは、値 1 を渡すことによって呼び出されます。
  • メソッド 追加() 2 つの変数の加算を返します a b .
  • 結局、 ログ() メソッドを使用して、コンソール ウィンドウに出力を表示します。

出力

出力が返されます 「10」 JavaScript の最大コール スタック サイズのエラーを解決することによって。

結論

再帰関数の無限呼び出しは、 「最大コールスタックサイズ超過エラー」 JavaScript で。この記事では、この種のエラーが発生する理由について説明します。その後、以下を含む 2 つのソリューション 「for ループ」 「条件文」 エラーを解決するために使用されます。したがって、これらのソリューションを採用することにより、呼び出し機能が制限されます。