Следующий тип цикла, который вы изучите, называется цикл do ... while. Он называется циклом do ... while, потому что он сначала выполнит один проход кода внутри цикла, несмотря ни на что, а затем проверяет условие истинности. Т.е. цикл do ... while выполнится как минимум один раз, даже если условие ложно.
var ourArray = [];
var i = 0;
do {
ourArray.push(i);
i++;
} while (i < 5);
Приведенный выше пример ведет себя так же, как и другие типы циклов, и результирующий массив будет иметь вид [0, 1, 2, 3, 4].
Однако то, что заставляет do ... отличаться от других циклов, - это то, как он ведет себя, когда условие не выполняется при первой проверке. Давайте посмотрим на это в действии: вот обычный цикл while, который будет запускать код в цикле, пока i <5:
var ourArray = [];
var i = 5;
while (i < 5) {
ourArray.push(i);
i++;
}
В этом примере мы инициализируем значение ourArray пустым массивом, а значение i равным 5. Когда мы выполняем цикл while, условие оценивается как false, потому что i не меньше 5, поэтому мы не выполняем код внутри цикла. В результате в ourArray не будет добавлено никаких значений, и он по-прежнему будет выглядеть как [], когда весь код в приведенном выше примере будет завершен.
Теперь взглянем на цикл do ... while:
var ourArray = [];
var i = 5;
do {
ourArray.push(i);
i++;
} while (i < 5);
В этом случае мы инициализируем значение i равным 5, как мы это делали с циклом while. Когда мы переходим к следующей строке, условия для оценки отсутствуют, поэтому мы переходим к коду, заключенному в фигурные скобки, и выполняем его. Мы добавим в массив один элемент, а затем увеличим i, прежде чем перейдем к проверке условий. Когда мы, наконец, оцениваем условие i <5 в последней строке, мы видим, что теперь i равно 6, что не соответствует условной проверке, поэтому мы выходим из цикла. В конце приведенного выше примера значение ourArray равно [5]. По сути, цикл do ... while гарантирует, что код внутри цикла будет выполнен хотя бы один раз.
Задание:
- Замените цикл while на цикл do... while
- После радоты цикла myArray должен быть равен [10]
- Переменная i должна равняться 11