我一直不明白为什么使用 做一会儿 循环是必要的。我理解他们的作用,即执行 while 循环包含的代码,而不首先检查条件是否为真。

但下面的代码不就是这样吗:

do{
    document.write("ok");
}
while(x == "10");

与以下完全相同:

document.write("ok");
while(x == "10"){
    document.write("ok");
}

也许我很愚蠢,错过了一些明显的东西,但我没有看到使用的好处 做一会儿 超过我上面的例子。

有帮助吗?

解决方案

您示例代码是错误的:

do{
    document.write("ok");
}while(x == "10"){
    document.write("ok");
}

这将是实际形式:

do {
    document.write("ok");
} while(x == "10");

您是正确的,它执行检查条件之前的内部代码块,但它并不需要复制内部代码块你有它的方式。 (根据情况而定)的做/ while结构是(如你已经陈述的)的方式,以确保使该一个片的代码被执行1次或更多次,而不是0次或多次。

其他提示

  • 正如你所看到的,你必须重复 相同的 第二个示例中的行。当你维护时,你很可能希望这两行相同,但你有 重复自己.

  • 现在想象一下这是一个 大块 而不是一条线,不仅会占用不必要的宝贵视觉 空间, ,但也将是 更难维护 并吸引 不一致之处.

不要同时将至少运行一次 - 让你做什么,而...其中,作为同时满足要求所有..

启动条件
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

什么:

do{

   //.....
   // 100000 lines of code!
   //.....

} while(i%10);

,点击 点击 点击 当然,你的不会写的是:

//.....
// 100000 lines of code!
//.....

while(i%10){

   //.....
   // 100000 lines of code!
   //.....

} 

,点击 结果

和你将被强制使用的 do-while循环 点击 天佑它!!

修改结果 或者你会使用程序..

当你必须至少被执行一次的代码多于一个的线所不同的是最重要的。模拟DO循环while循环会导致大量的重复代码,这始终是坏的。当然,更好的解决方案是重构代码到一个方法,然后简单地面前,并在循环中同样的方法调用,但很多人不喜欢,甚至是大量重复,并使用do关键字毫不含糊地声明:“这是一个脚控环”。

因此,基本上,可读性和基本SE原理。

及其编写代码的一个更好的方法:

int count = ReadDataFromStream();
while(count != 0)
{
    count = ReadDataFromStream();
}

可以使用写入DO-而为:

int count = 0;
do
{
    count = ReadDataFromStream();
} while(count != 0);

有做,而我却不能在这个时候回忆。

这是更好的例子

什么你缺少的是你的do...while以上的使用是100%的错误

Java中的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
}

这个代码,但是,需要你两次键入相同的(潜在的大和复杂的)代码,让炉门开着的更多错误。因此,需要一个底测试环路,而不是顶测试环路。

所有do..while语法首先是错误的。它是这样的:

do
{
  document.write("ok");
}while(x=="10");

当要在不评估其teminating条件时执行至少所述循环体一旦它是有用的。例如,假设你想要写一个循环,你是提示用户进行输入,并根据输入执行一些代码。你想这至少执行一次,然后询问用户是否希望继续。在这种情况下,在较小的和更清洁的代码do..while循环的结果相比while循环。

虽然

do { 
    s1;
    ...
    sn;
} while (p);

可以写成

boolean done = false;
while (!done) {
    s1;
    ...
    sn;
    done = !p;
}

前者是更容易理解。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top