Циклы: for и while
Сложить все целые числа от 1 до 100 вручную долго. Цикл for из трёх строк делает это сразу и печатает 5050.
Одно и то же много раз
Напечатать числа от 1 до 5 пятью строками console.log можно. Напечатать так числа от 1 до 1000 нельзя. Цикл выполняет один и тот же блок кода снова и снова, каждый раз немного меняя что-то, пока условие не скажет «стоп». В циклах компьютеры и показывают свою пользу: им не бывает скучно, и они никогда не сбиваются со счёта.
Цикл for
for (let i = 1; i <= 5; i++) {
console.log(i);
}
// печатает 1, 2, 3, 4, 5 в отдельных строкахВ скобках после for три части, разделённые точкой с запятой. Первая, let i = 1, выполняется один раз перед началом цикла и создаёт переменную-счётчик. Вторая, i <= 5, является условием, оно проверяется перед каждым кругом; когда оно становится false, цикл заканчивается. Третья, i++, выполняется после каждого круга и сдвигает счётчик. Один проход по блоку называется итерацией. Проследим: i равно 1, условие true, печатается 1, i становится 2, и так далее, пока i не станет 6, условие не окажется false, и программа не продолжит работу после закрывающей скобки.
Счётчик обычно называют i, это традиция из математики, но подойдёт любое имя. Считать можно и с другим шагом: for (let i = 10; i >= 0; i -= 2) отсчитывает 10, 8, 6, 4, 2, 0.
Накопление суммы
Самый частый приём с циклом называется накопителем. Создай переменную до цикла, обновляй её внутри и используй после. Вот сумма из начала урока:
let sum = 0;
for (let i = 1; i <= 100; i++) {
sum += i;
}
console.log(sum); // 5050Обрати внимание, где стоит каждая строка. Если бы let sum = 0 стояла внутри цикла, sum обнулялась бы на каждой итерации. Если бы внутри стоял console.log, он напечатал бы 100 промежуточных сумм вместо одного ответа. То, что до цикла и после него, так же важно, как сам цикл.
Цикл while
У цикла while есть только условие. Он выполняет свой блок, пока условие true. Используй его, когда заранее не знаешь, сколько понадобится кругов, например когда удваиваешь число, пока оно не превысит 1000.
let n = 1;
let steps = 0;
while (n <= 1000) {
n *= 2;
steps++;
}
console.log(n, steps); // 1024 10Что-то внутри цикла while должно в конце концов сделать условие false. Если забыть строку, которая меняет n, условие останется true навсегда. Это бесконечный цикл, и страница зависает. Если так случится в поле для практики, перезагрузи страницу и исправь код. В цикле for шаг обновления записан в заголовке, поэтому такая ошибка там реже.
break и continue
Два ключевых слова меняют ход выполнения внутри цикла. break сразу выходит из цикла. continue пропускает остаток текущей итерации и переходит к следующей. Например, цикл от 1 до 10 с if (i % 3 === 0) continue; в начале печатает все числа, кроме 3, 6 и 9.
Разобранный пример. Сколько чисел от 1 до 50 кратны 7? Начни с let count = 0, пройди циклом i от 1 до 50 и внутри напиши if (i % 7 === 0) count++;. После цикла count равно 7: это 7, 14, 21, 28, 35, 42 и 49.
for (начало; условие; шаг) { тело } for (let i = 1; i <= 5; i++)
| цикл | Код, который выполняет блок снова и снова |
| итерация | Один проход по телу цикла |
| счётчик | Переменная, которая считает круги, часто i |
| накопитель | Переменная, которая набирается внутри цикла, например sum |
| while | Повторяет, пока условие true |
| бесконечный цикл | Цикл, условие которого никогда не становится false |
| break | Выйти из цикла сейчас |
| continue | Перейти к следующей итерации |
- Сколько строк напечатает этот код?
for (let i = 0; i < 4; i++) { console.log(i); } - Какое число напечатается последним?
for (let i = 0; i < 4; i++) { console.log(i); } - Что выведет этот код?
let total = 0; for (let i = 1; i <= 4; i++) { total += i; } console.log(total); - Что выведет этот код?
let p = 1; for (let i = 1; i <= 5; i++) { p *= 2; } console.log(p); - Что выведет этот код?
let n = 10; while (n > 3) { n -= 3; } console.log(n); - Сколько строк напечатает этот код?
for (let i = 10; i >= 0; i -= 2) { console.log(i); } - Что выведет этот код?
for (let i = 1; i <= 10; i++) { if (i === 4) break; console.log(i); }- 1 2 3 on separate lines
- 1 to 10 except 4
- 1 2 3 4 on separate lines
- Сколько строк напечатает этот код?
for (let i = 1; i <= 10; i++) { if (i % 2 === 0) continue; console.log(i); } - Что не так с этим циклом?
let i = 0; while (i < 5) { console.log(i); }- Всё в порядке
- i никогда не меняется, поэтому цикл не останавливается
- Он ничего не печатает
- Что выведет этот код?
let count = 0; for (let i = 1; i <= 50; i++) { if (i % 7 === 0) count++; } console.log(count);
- for (начало; условие; шаг) { ... } повторяет, пока условие true.
- Создавай накопители до цикла, обновляй внутри, используй после.
- while (условие) { ... } подходит для циклов с заранее неизвестным числом кругов.
- Что-то должно сделать условие false, иначе цикл никогда не закончится.
- break выходит из цикла; continue переходит к следующему кругу.
Источники курса (2)
- MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
- Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)
Проверено: 2026-10-17