web-dev-qa-db-ja.com

JavaScriptのwhileループとforループ

whileループよりもforループを使用する利点は何ですか?配列を繰り返し処理するときは、常にforループを使用するため、ここで何かが欠落しているのではないかと考えました。

forループが役に立たない状況は一度もありませんでしたが、ここで悪い習慣を取り戻しているのではないかと心配しています。私のループの使用法は、Webページの要素、アニメーションの要素などに関してです。

15
Paul12_

これらは、私が他のものよりも1つを選ぶ理由です:

Forループ構文:

for( int i = 0; i > 10; i++)
{
    //Some code here
}

必要な反復回数を知ることができ、時々便利な増分変数があるため、forループを使用します。

While-loop構文:

while(!done)
{
    //Some code goes here
}

このループは、実行する必要がある反復回数がわからない場合に使用します。例:ユーザーが正しい入力値を入力するのを待って、適切な値を入力するまでループを続けます。

Do-Whileループの構文:

do
{
    //Some code here
}
while(!done);

このループはwhileループとほぼ同じですが、ループしたいことを確認してからコードをもう一度実行する前に、少なくとも1回ATLEASTを行う必要がある場合にこれを好むでしょう。例:初めてユーザーに入力を求め、それを検証します。間違った入力が与えられた場合、ループバックして再度入力を求めます

29

機能的には、すべての条件で一方を他方に置き換えることができます。一方が他方より優れていますか?コンパイルされた言語ではないため、javascript(タグ付けした)ではありません。

ただし、C++などの言語では、forループは通常、コンパイラーがループを静的にカウントし、コンパイラーがバイナリーを最適化するために使用できます。そのため、(非常に大きなループカウントで)高速に実行されるはずです。

これは、2.5 GHzクアッドコアCPUで10000回の繰り返しを実行するループのパフォーマンスの向上に気付かない今日の時代では心配するべきではありません。

しかし、個人的には、美学は私にとって非常に重要です(コーディングの技術に真剣に取り組んでいるなら、あなたにとってもそうすべきです)。たとえば、外部条件を処理する場合(チェックする変数はループ外で定義されます)、whileループを使用します。その意味的にはとても美しいです。また、whileループは、無限ループの事実上の選択である必要があります(ただし、javascriptに無限ループがある理由はわかりません)。

要するに、構文に従ってください。条件を確認しているだけですか? whileループを使用します。ループのコンテキストで、条件のチェックとともに何かを初期化およびインクリメント/デクリメントしていますか?それからforループを使用してください。

11
Jayachandran

ループのeitherを常に使用できます。しかし、forループの最も一般的な使用法は、反復の数がわかっている、およびwhileループが不確実な反復の数 =または特定の条件に依存します。例えば:

var arr = ["a", "b", "c"];
for (let i=0; i<arr.length; i++) { // will loop 3 times (length of arr = 3)
    // do something
}

var x = "Hello";
while (x != "World") {
    // do something
    if (some_condition) {
        // do something
    }
    else x = "World";
}
8
Rax Weber