序文Js デッド ループはどのようにして発生しますか?実際、コードを書くときに注意を払わなかったり、何かを見逃したりすると、次のコードに示すように、無限ループを記述することになります。 i++ が書かれていない場合、これは無限ループです。無限ループの結果を知りたい場合は、自分で試してみるのもよいでしょう。 無限ループとは、ループを終了できない不正な条件を持つ JavaScript コードです。 無限ループは、コードを実行している環境 (ブラウザーまたは NodeJS サーバー) でコンピューターがクラッシュまたはフリーズし、応答が停止する可能性があるため、危険です。 for 文と while 文は無限ループの一般的な原因であるため、このチュートリアルでは、これらの文によって発生する無限ループを検出して修正する方法を説明します。 まず、 for ステートメント内の無限ループを修正しましょう。 for文の無限ループを修正for 文では、2 番目の式 (条件式) に比較演算子ではなく代入演算子を誤って配置すると、無限ループが発生する可能性があります。 以下は、無限ループが発生する for ステートメントの例です。 2 番目の式では i = 10 となっていることに注意してください。 (i = 0; i = 10; i++ とします) { console.log("無限ループ"); } for ステートメントでは、ループを終了するために 2 番目の式が false と評価される必要があります。上記の例では、i < 10 や i > 10 のような比較演算子の代わりに、代入演算子 i = 10 が条件式として配置されています。 代入演算子は常に true と評価されるため、for ステートメントはコンソールに「無限ループ」の出力を停止せず、コンピューターがフリーズする可能性があります。 上記の for ステートメントを修正するには、2 番目の式を for ステートメントで到達可能なものに置き換える必要があります。例としては、比較演算子(=<、<、>、>=)の使用が挙げられます。 // 2番目の式は<に置き換えられます (i = 0; i < 10; i++ とします) { console.log("無限ループ"); } 同じエラーの別のバージョンがあります。今回は、最初の式と 2 番目の式によって無限ループが発生します。 (i = 5; i > 0; i++ とします) { console.log("無限ループ"); } 上記のコードからわかるように、変数 i が 0 より大きい限りループは継続されます。 i の値は初期化時にすでに 0 より大きいため、2 番目の式は常に true と評価され、無限ループが発生します。 上記のコードを修正するには、3 番目の式で i の値を増分するのではなく減分する必要があります。 (i = 5; i > 0; i--とします) { console.log("無限ループ"); } 無限ループが発生する可能性がある for ステートメントの別の例は、次のように括弧内の 3 つの式がすべて省略されている場合です。 のために (;;) { console.log("無限ループ"); } ただし、上記のコードは意図的にのみ記述する必要があるため、コンピューターをクラッシュさせたくない場合は、プロジェクトで使用しないでください。 実際に記述する for ステートメントは上記の例よりも確かに複雑になりますが、同じ原則を使用して for ステートメント内のエラーを見つけて修正することができます。 まず、for ステートメント内に配置する 2 番目の式が実際に false と評価されることを確認する必要があります。 2 番目の式が正しい場合は、1 番目と 3 番目の式のチェックを開始します。最初の式は、2 番目の式が実行されたときに常に true と評価される値を初期化しますか? 最後に、3 番目の式は、最初の式で初期化された変数の値を正しく増分または減分しますか? 要約すると、まず 2 番目の式をチェックし、次に 1 番目と 3 番目の式をこの順序でチェックします。 次に、while ステートメントによって発生する無限ループを修正する方法を学びましょう。 while文の無限ループを修正while ステートメントでは、括弧内の条件式が常に true と評価される場合、無限ループが発生する可能性があります。 (真)の間{ console.log("無限ループ"); } 無限ループを防ぐには、while ステートメントの条件式が false と評価される必要があります。 while ステートメントを書くときに最もよくある間違いの 1 つは、条件式で使用される変数の値を変更することを忘れることです。 次の例では、 の値が never どのように変化しないかに注意してください。 i = 0 とします。 (i < 6) の間 { console.log("無限ループ"); } ループの実行時に条件式が false と評価されるように、while ステートメントの本体内で i の値を増分する必要があります。 i = 0 とします。 (i < 6) の間 { console.log("無限ループ"); 私は++; } while ステートメントがどんなに複雑であっても、while() 括弧内の条件式が false と評価されることを確認する必要があります。 それでも無限ループの原因がわからない場合は、console.log() ステートメントを使用して、条件式で使用される変数の値を出力できます。 i = 0 とします。 (i < 6) の間 { console.log("無限ループ"); 私は++; コンソールにログ出力します。 } コンソール ログは、エラーのあるコード行を特定して修正するのに役立ちます。 要約するJavaScript の無限ループを検出して防止する方法についての記事はこれで終わりです。js の無限ループを検出して防止する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: CSS により、子コンテナが親要素を超えます (子コンテナは親コンテナ内で浮動します)
背景nginx サーバー モジュールは 2 つのサーバーにプロキシする必要があるため、異なるサーバー...
最近では、モバイルデバイスがますます普及しており、ユーザーがスマートフォンやタブレットを使用して W...
Linux 上の LibreOffice で Microsoft ドキュメントを開くと、フォントが少...
目次1. ブリッジを設定し、検証のためにパケットをキャプチャする1. ブリッジデバイスとセッションを...
MySQL による CPU 負荷の上昇今日の午後、MySQL によってサーバーの負荷が高くなる問題を...
コンテナの起動時に Docker コンテナ内のアプリケーション サービスを自動的に起動する場合。 D...
この記事では、携帯電話のカメラとアルバムにアクセスするためのVueの具体的なコードを参考までに共有し...
目次1. はじめに2. Windows用Dockerをインストールする1. Windows用Dock...
序文ロックの範囲に応じて、MySQL のロックは、グローバル ロック、テーブル ロック、行ロックに大...
プラットフォームの展開1. JDKをインストールするステップ1. OracleJDKをダウンロードす...
以前は、フロートはレイアウトによく使用されていましたが、フローティングレイアウトを使用すると親要素の...
理由nacos の pom が依存する mysql バージョンが、mysql バージョンと一致してい...
最近、多くの学生から Web ページのエンコーディングについて質問を受けています。gb2312 と ...
導入HibernateやMyBatisなどのORMフレームワークでは、部門に関連付けられたユーザーオ...
目次1. provide/inject の用途は何ですか? 2. provide/injectの使い...