9

可能重复:
什么时候做一个合适的?

有人介意告诉我这两个语句之间的区别是什么,什么时候应该使用一个而不是另一个?

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 循环将执行一次,而您的正常 while 循环不会执行该循环。

于 2011-04-08T18:05:46.590 回答
10

do-while保证至少运行一次。虽然while循环可能根本不会运行。

于 2011-04-08T18:06:29.090 回答
2

do 语句通常可确保您的代码至少执行一次(表达式在结尾处求值),而 while 在开始处求值。

于 2011-04-08T18:06:47.233 回答
2

假设您想在循环内至少处理一次块,而不管条件如何。

于 2011-04-08T18:07:19.603 回答
2

do while在块运行后检查条件。while在运行之前检查条件。这通常用于代码总是至少运行一次的情况。

于 2011-04-08T18:07:34.673 回答
2

if you would get the counterTwo value as a return value of another function, you would safe in the first case an if statement.

e.g.

var counterTwo = something.length; 

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

or

var counterTwo = something.length; 

if(counterTwo < 0) return;

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

the first case is useful, if you process the data in an existing array. the second case is useful, if you "gather" the data:

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