do-while声明

时间:2011-04-08 18:04:28

标签: javascript do-while

  

可能重复:
  When is a do-while appropriate?

有人会介意告诉我这两个陈述之间的区别是什么,以及何时应该使用另一个陈述?

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语句中未指定它的情况下完成。

6 个答案:

答案 0 :(得分:22)

执行/重置VS同时检查条件的时间。

while循环检查条件,然后执行循环。 Do / While执行循环,然后检查条件。

例如,如果counterTwo变量为10或更大,那么do / while循环将执行一次,而正常的while循环不会执行循环。

答案 1 :(得分:9)

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

答案 2 :(得分:1)

do语句通常可以确保您的代码至少执行一次(在结尾处计算表达式),同时在开始时进行评估。

答案 3 :(得分:1)

假设您想要在循环内至少处理一次块,无论条件如何。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

如果你将counterTwo值作为另一个函数的返回值,你会在第一种情况下安全地使用if语句。

e.g。

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");