Вопрос

Я никогда не понимал, почему использовать делать пока петли необходим. Я понимаю, что они делают, то есть для выполнения кода, когда цикл 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");

Вы правы, что он выполняет блок внутреннего кода перед проверкой условия, но ему не нужно дублировать внутренний код блокировать так, как у вас есть. Строительство DO / во время (как вы уже говорили) способ убедиться, что кусок кода выполнен 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, когда цикла в то время как будет привести к дублированию существенного кода, что всегда плохо. Предоставлено, лучшее решение заключается в рефакторе, который код в метод, а затем просто имеет тот же вызов метода до и в петле, но многие люди не любят даже так много дублирования, и используя do Ключевое слово объявляет однозначно "Это петля контролируемого ногами".

Таким образом, в основном, читабельность и основные принципы SE.

Это лучший способ написания кода:

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

Можно записать с использованием Do-While AS:

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

Есть лучшие примеры до-в то время, но я не мог вспомнить в это время.

То, что вы не хватаете, это то, что ваше использование do...while выше 100% НЕПРАВИЛЬНО!

А. do...while Петля в Java, например, выглядит что-то подобное:

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

Это полезно, когда вы хотите выполнить тело цикла хотя бы один раз, не оценивая его временное состояние. Например, позволяет сказать, что вы хотите написать цикл, в котором вы подскажите пользователю ввод и в зависимости от ввода выполнить какой-то код. Вы хотели бы, чтобы это выполнить хотя бы один раз, а затем спросить пользователя, хочет ли он продолжить. В таких случаях, do..while петля приводит к меньшему и более чистому коду по сравнению с while петля.

Несмотря на то что

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

может быть написано как

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

Первый более понятен.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top