Рассмотрим программу, которая выводит все четные числа от 0 до 12. Один из способов написать это:
console.log (0);
console.log (2);
console.log (4);
console.log (6);
console.log (8);
console.log (10);
console.log (12);
Это работает, но идея написания программы состоит в том, чтобы заставить что-то меньше работать, а не больше. Если бы нам нужны были все четные числа менее 1000, такой подход был бы неосуществимым. Нам нужен способ запуска фрагмента кода несколько раз. Эта форма потока управления называется циклом.
Зацикливание потока управления позволяет нам вернуться к некоторой точке программы, где мы были раньше, и повторить ее с текущим состоянием программы. Если мы объединим это с привязкой, которая имеет значение, мы можем сделать что-то вроде этого:
let number = 0;
while (number <= 12) {
console.log(number);
number = number + 2;
}
// → 0
// → 2
// … и так далее
Оператор, начинающийся с ключевого слова while, создает цикл. За словом while следует выражение в скобках, а затем утверждение, очень похожее на if. Цикл продолжает вводить этот оператор до тех пор, пока выражение выдает значение, которое дает значение true при преобразовании в логическое значение.
Привязка чисел демонстрирует, как привязка может отслеживать ход выполнения программы. Каждый раз, когда цикл повторяется, число получает значение, которое на 2 больше, чем его предыдущее значение. В начале каждого повторения его сравнивают с числом 12, чтобы определить, завершена ли работа программы.
В качестве примера, который действительно делает что-то полезное, теперь мы можем написать программу, которая вычисляет и показывает значение 210 (от 2 до 10-й степени). Мы используем две привязки: одну для отслеживания нашего результата и одну для подсчета того, как часто мы умножали этот результат на 2. Цикл проверяет, достигла ли вторая привязка еще 10, и, если нет, обновляет обе привязки.
let result = 1;
let counter = 0;
while (counter < 10) {
result = result * 2;
counter = counter + 1;
}
console.log(result);
// → 1024
Счетчик также мог бы начинаться с 1 и проверяться на <= 10, но по причинам некоторым причинам, хорошей идеей будет привыкнуть к счету от 0.
Цикл do - это структура управления, похожая на цикл while. Он отличается только одним моментом: цикл do всегда выполняет свое тело хотя бы один раз и начинает тестировать, останавливаться ли он только после этого первого выполнения. Чтобы отразить это, тест появляется после тела цикла.
let yourName;
do {
yourName = prompt("Кто ты?");
}
while (!yourName);
console.log(yourName);
Эта программа заставит вас ввести имя. Он будет спрашивать снова и снова, пока не получит что-то, что не является пустой строкой. Применяя! Оператор преобразует значение в логический тип перед его отрицанием, а все строки, кроме "", преобразуются в true. Это означает, что цикл продолжает вращаться, пока вы не предоставите непустое имя.