9

重複の可能性:
do-whileが適切なのはいつですか?

これらの2つのステートメントの違いは何であり、一方を他方よりもいつ使用する必要があるかを誰かに教えてもらえますか?

var counterOne = -1;

do {
    counterOne++;
    document.write(counterOne);
} while(counterOne < 10);

または:

var counterTwo = -1;

while(counterTwo < 10) {
    counterTwo++;
    document.write(counterTwo);
}

http://fiddle.jshell.net/Shaz/g6JS4/

現時点では、doステートメント内で指定せずに実行できるのであれば、ステートメントのポイントはわかりませんwhile

4

6 に答える 6

26

Do / While VS Whileは、条件がチェックされるタイミングの問題です。

whileループは条件をチェックしてから、ループを実行します。Do / Whileはループを実行してから、条件をチェックします。

たとえば、counterTwo変数が10以上の場合、do / whileループは1回実行されますが、通常のwhileループはループを実行しません。

于 2011-04-08T18:05:46.590 に答える
10

do-while、少なくとも1回は実行されることが保証されています。whileループがまったく実行されない場合があります。

于 2011-04-08T18:06:29.090 に答える
2

doステートメントは通常、コードが少なくとも1回実行され(式は最後に評価されます)、whileは最初に評価されることを保証します。

于 2011-04-08T18:06:47.233 に答える
2

条件に関係なく、ループ内のブロックを少なくとも1回処理したいとします。

于 2011-04-08T18:07:19.603 に答える
2

do whileブロックの実行後に条件をチェックします。while実行前に条件をチェックします。これは通常、コードが常に少なくとも1回実行される状況で使用されます。

于 2011-04-08T18:07:34.673 に答える
2

counterTwo値を別の関数の戻り値として取得する場合は、最初のケースでifステートメントを使用しても安全です。

例えば

var counterTwo = something.length; 

while(counterTwo > 0) {
    counterTwo--;
    document.write(something.get(counterTwo));
}

また

var counterTwo = something.length; 

if(counterTwo < 0) return;

do
{
        counterTwo--;
    document.write(something.get(counterTwo));
} while(counterTwo > 0);

最初のケースは、既存の配列のデータを処理する場合に役立ちます。2番目のケースは、データを「収集」する場合に役立ちます。

do
{
     a = getdata();
     list.push(a);
} while(a != "i'm the last item");
于 2011-04-08T18:08:06.840 に答える