2011-04-08 10 views
7

可能性の重複:
When is a do-while appropriate?DO-while文

誰かが、一方が他方の上に使用しなければならないときに、これらの二つの文の違いがあり、何を私に言って気にしませんか?

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/

この時点で、それだけでwhile文の中にそれを指定せずに行うことができるならば、時間に私がdo声明のポイントが表示されていません。

+0

http://stackoverflow.com/questions/1035229/when-is-a-do-while-appropriate –

+0

@lwburkの重複:あなたはデータを "収集" 場合 後者の場合は、有用です。私は他のループ(for、switch、if)を求めていません。私は、「while」と「do-while」の違いは何かと思います。 – Shaz

+0

連続していない。それはまさにその質問が何であるかです。 –

答えて

20

Do/While VS Whileは、条件がチェックされたときの問題です。

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

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

8

do-whileは少なくとも1回は動作することが保証されています。 whileループはまったく実行されません。

1

do文は、通常、コードが実行時に少なくとも1回(式が最後に評価される)、実行中に評価されることを保証します。

1

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

1

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

1

他の関数の戻り値として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); 

既存の配列内のデータを処理する場合は、最初のケースは、便利です。

do 
{ 
    a = getdata(); 
    list.push(a); 
} while(a != "i'm the last item");