我永远不明白为什么在循环时使用是必要的。我理解他们做了什么,这是执行while循环包含的代码而不检查条件是否为真。
但不是以下代码:
do{
document.write("ok");
}
while(x == "10");
完全相同:
document.write("ok");
while(x == "10"){
document.write("ok");
}
也许我是非常愚蠢的,并且遗漏了一些显而易见的东西,但是我没有看到在上使用上面的例子时的好处。
答案 0 :(得分:17)
如您所见,您必须在第二个示例中重复相同行。 当你维护时,你很可能希望这两行是相同的,但你有自己重复。
现在想象一下,这是一个大块而不是一条线,它不仅会带来不必要的视觉空间,而且还会难以维持并吸引不一致。
答案 1 :(得分:15)
您的示例代码错误:
do{
document.write("ok");
}while(x == "10"){
document.write("ok");
}
这将是实际形式:
do {
document.write("ok");
} while(x == "10");
在检查条件之前执行内部代码块是正确的,但它不需要像你拥有它那样复制内部代码块。 do / while结构(正如您已经说过的)是一种确保一段代码执行1次或更多次而不是0次或更多次的方法(取决于条件)。
答案 2 :(得分:6)
同时会至少运行一次 - 让你这样做,而......在某些情况下需要满足条件才能开始......
var i = 6;
do{
alert(i);
}while( i < 5)
// alerts 6, but while criteria isn't met so it stops
var i = 6;
while( i < 5) {
alert(i);
}
// no output - while condition wasn't met
答案 3 :(得分:4)
怎么样:
do{
//.....
// 100000 lines of code!
//.....
} while(i%10);
当然你不会写出:
//.....
// 100000 lines of code!
//.....
while(i%10){
//.....
// 100000 lines of code!
//.....
}
然后你将被迫使用 do-while循环
上帝保佑它!
修改强>
或者您将使用程序..
答案 4 :(得分:2)
当您有多行代码至少执行一次时,差异是最重要的。使用while循环模拟do循环会导致大量的代码重复,这总是很糟糕。当然,一个更好的解决方案是将该代码重构为一个方法,然后在循环之前和循环中简单地进行相同的方法调用,但是很多人不喜欢那么多的重复,并且使用do
关键字明确声明“这是一个脚控制的循环“。
所以,基本上,可读性和基本的SE原则。
答案 5 :(得分:2)
它是编写代码的更好方法:
int count = ReadDataFromStream();
while(count != 0)
{
count = ReadDataFromStream();
}
可以使用do-while编写:
int count = 0;
do
{
count = ReadDataFromStream();
} while(count != 0);
有更好的做法,但我现在不记得了。
答案 6 :(得分:1)
您遗失的是,您对do...while
的使用是100%错误!
do...while
循环看起来像这样:
do {
//something you want to execute at least once
} while (someBooleanCondition);
看到完全缺少第二块?查看while
如何完全结束语句?那么现在发生的事情是{...}
和do
之间的while
对中的代码将被执行,然后 someBooleanCondition
将被测试,如果这是真的,代码块将再次执行。然后再次。然后再次。直到someBooleanCondition
被测试为假。
在这一点上,也许,你会明白为什么我们有两种形式的循环。以上代码可以翻译为:
//something you want to execute at least once
while (someBooleanCondition) {
//something you want to execute at least once
}
但是,此代码要求您输入两次相同(可能很大且复杂的)代码,使门打开以获得更多错误。因此需要一个底部测试循环而不是顶部测试循环。
答案 7 :(得分:1)
首先,您的do..while
语法错误。就像这样:
do
{
document.write("ok");
}while(x=="10");
当您想要至少执行一次循环体而不评估其终止条件时,它非常有用。例如,假设您要编写一个循环来提示用户输入,并根据输入执行一些代码。您希望此操作至少执行一次,然后询问用户是否要继续。在这种情况下,与do..while
循环相比,while
循环导致代码更简洁,更清晰。
答案 8 :(得分:0)
虽然
do {
s1;
...
sn;
} while (p);
可以写成
boolean done = false;
while (!done) {
s1;
...
sn;
done = !p;
}
前者更容易理解。