有人会介意告诉我这两个陈述之间的区别是什么,以及何时应该使用另一个陈述?
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 :(得分: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");