2011-04-08 80 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/

在这个时刻我没有看到do声明的点,如果它可以只是没有具体说明的while语句内完成。

+0

http://stackoverflow.com/questions/1035229/when-is-a-do-while-appropriate – 2011-04-08 18:06:34

+0

@lwburk的重复:我不问其他循环('for','switch','if')。我想知道'while'和'do-while'之间的区别是什么。 – Shaz 2011-04-08 18:09:59

+0

非sequitur。这正是这个问题的关键。 – 2011-04-08 18:14:14

回答

20

Do/While VS虽然是检查条件的时间问题。

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

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

8

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

1

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

1

比方说,不管条件如何,您都希望至少处理循环内的块一次。

1

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

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