Цикл while
В for старт, условие и обновление собраны в одной шапке. Иногда вы знаете только правило «продолжай, пока это истина» — а счётчик меняется внутри самой работы. while сначала проверяет условие, выполняет тело, снова проверяет. Та же идея повтора; другая форма на странице.
Что делает while?
Пока выражение в скобках истинно, блок { } выполняется снова. В шапке нет отдельных слотов для init или обновления. Переменные готовьте до цикла и меняйте в теле, пока условие не станет ложным. Тогда цикл останавливается, и идёт следующая инструкция.
while, for и do...while одним взглядом
📊 Повседневные формы циклов
| Форма | Когда подходит | Проверка условия |
|---|---|---|
while |
идти, пока правило верно; обновление в теле | перед каждым кругом |
for |
старт, стоп и шаг уже ясны | перед каждым кругом (шапка из трёх частей) |
do...while |
тело должно выполниться хотя бы раз | после каждого круга |
Ученические while часто всё ещё на маленьком целочисленном счётчике. Разница в месте: let i = 0 до цикла, i++ (или другое изменение) внутри фигурных скобок. Если никогда не менять то, что читает условие, цикл может не закончиться.
let i = 0;
while (i < 5) {
console.log(i);
i++;
}
Считать через while
i начинается с 0 до цикла. Каждый круг печатает i и добавляет единицу. Вы видите 0…4 — пять кругов. Значение 5 не печатается, потому что условие сначала ложно. Без i++ в теле i навсегда останется 0.
Прочитайте один круг медленно: условие → тело (с обновлением) → снова условие. Поэтому забытое обновление — классическая ловушка бесконечного цикла с while.
let n = 1;
while (n <= 3) {
console.log("step " + n);
n++;
}
Старт с 1 и ясные метки
Здесь счётчик с 1, условие n <= 3; вы видите step 1, step 2, step 3. Начинать с 0 или 1 — выбор дизайна; держите условие согласованным, как в for.
let total = 0;
let k = 1;
while (k <= 4) {
total = total + k;
k++;
}
console.log(total);
Накапливать итог
total начинается с 0. Каждый круг добавляет текущий k, затем двигает k. После 1+2+3+4 получается 10. Растущий результат живёт вне цикла; счётчик для условия — рядом.
let left = 3;
while (left > 0) {
console.log("left=" + left);
left--;
}
console.log("done");
Считать вниз до остановки
Не каждый цикл только растёт. Этот печатает left=3, left=2, left=1, затем done. Уменьшение счётчика тоже честное обновление — любое изменение к концу цикла уместно.
let x = 0;
do {
console.log("tick " + x);
x++;
} while (x < 1);
console.log("after=" + x);
do...while сначала выполняет тело
do...while выполняет тело один раз, потом проверяет условие. Даже если для обычного while условие уже было бы ложным, первый круг всё равно случится. Здесь вы видите tick 0, затем after=1. Используйте, когда история — «попробовать раз, потом при необходимости повторить».
Показать результат while на странице
Короткий счёт через while, собрать сообщение, записать на страницу.
<!DOCTYPE html>
<html>
<head>
<title>While — page count</title>
</head>
<body>
<p id="out">…</p>
<script>
let msg = "";
let i = 1;
while (i <= 4) {
msg = msg + i + " ";
i++;
}
let box = document.getElementById("out");
box.textContent = "count=" + msg.trim();
</script>
</body>
</html>
Страница показывает count=1 2 3 4. Смените верхнюю границу, обновите страницу, прочитайте новый список. Предпочитайте for, когда трёхчастный план очевиден; предпочитайте while, когда правило остановки яснее как одно условие с обновлением в теле. Дальше — обход значений и ключей через for...of и for...in.
Попробуйте сами
- Напишите
while, который логирует0…4сi < 5иi++в теле. - Измените, чтобы логировать
1…5сi <= 5. - Сложите
1…5вtotalчерезwhileи залогируйте результат. - Считайте вниз от
5до1, затем залогируйтеdone. - Напишите
do...while, который печатает строку даже если условие сразу ложно. - В HTML-демо смените только верхнюю границу, обновите, прочитайте
count=.
Частые ошибки
- Забыть обновление в теле, чтобы условие никогда не стало ложным (бесконечный цикл)
- Ошибка на единицу:
i < 5вместоi <= 5(или наоборот) - Выбрать
do...while, когда реально нужны ноль кругов - Поставить обновление не туда или менять другую переменную
- Длинный
while, когда ясная шапкаforчиталась бы лучше
Кратко
whileповторяет блок, пока условие истинно- Готовьте переменные до цикла; обновляйте в теле
- Удобно для счёта, суммы и обратного отсчёта
do...whileвыполняет тело минимум раз, потом проверяет- Предпочитайте
forпри ясных старт/стоп/шаг;while— для одного текущего правила - Дальше: for...of и for...in — обход значений и ключей
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху