Циклы: for, while, do...while, for...in, for...of
🔄 Зачем нужны циклы?
Представьте: вам нужно вывести числа от 1 до 100 или обработать каждый элемент массива. Писать console.log(1), console.log(2) и так далее — муторно! Циклы автоматизируют повторяющиеся действия.
💡 Фишка: Циклы экономят время, делают код чище и позволяют работать с динамическими данными (когда их количество заранее неизвестно).
1. Цикл for — классика жанра
Синтаксис:
for (начало; условие; шаг) {
// тело цикла
}
Пример: Выведем чётные числа от 2 до 10:
for (let i = 2; i <= 10; i += 2) {
console.log(i); // 2, 4, 6, 8, 10
}
let i = 2— начальное значение.i <= 10— условие: цикл работает, покаiменьше или равно 10.i += 2— шаг: увеличиваемiна 2 после каждой итерации.
🔥 Важно:
forидеален, когда известно количество повторений.
2. Цикл while — делаем, пока условие истинно
Синтаксис:
while (условие) {
// тело цикла
}
Пример: Угадываем число от 1 до 5:
let number = 1;
while (number <= 5) {
console.log(`Попытка ${number}`);
number++;
}
Выведет:
Попытка 1
Попытка 2
...
Попытка 5
🚨 Осторожно: Если условие всегда
true, цикл станет бесконечным! Проверяйте, чтобы оно менялось.
3. Цикл do...while — сначала действие, потом проверка
Отличается от while тем, что тело выполнится хотя бы один раз, даже если условие ложно.
Синтаксис:
do {
// тело цикла
} while (условие);
Пример: Запрос пароля:
let password;
do {
password = prompt('Введите пароль:', '');
} while (password !== '12345');
Пользователь получит запрос, пока не введёт 12345.
4. Цикл for...in — путешествие по свойствам объекта
Нужен для перебора свойств объекта.
Синтаксис:
for (ключ in объект) {
// тело цикла
}
Пример: Выведем все свойства пользователя:
const user = { name: 'Данила', age: 30, isAdmin: true };
for (let key in user) {
console.log(`${key}: ${user[key]}`);
}
Результат:
name: Данила
age: 30
isAdmin: true
⚠️ Запомните:
for...inне гарантирует порядок перебора свойств (особенно в старых браузерах).
5. Цикл for...of — для массивов и не только
Перебирает значения итерируемых объектов (массивы, строки, Map, Set и др.).
Синтаксис:
for (значение of итерируемыйОбъект) {
// тело цикла
}
Пример: Суммируем элементы массива:
const numbers = [10, 20, 30];
let sum = 0;
for (let num of numbers) {
sum += num;
}
console.log(sum); // 60
🌟 Плюс:
for...ofработает с любыми итерируемыми объектами, включая DOM-коллекции.
🏆 Когда какой цикл использовать?
| Цикл | Когда использовать? | Пример использования |
|---|---|---|
for |
Известно количество итераций | Перебор массива по индексу |
while |
Неизвестно число итераций | Чтение файла до конца |
do...while |
Нужна хотя бы одна итерация | Валидация ввода пользователя |
for...in |
Перебор свойств объекта | Логирование всех полей объекта |
for...of |
Перебор значений итерируемых объектов | Обработка каждого элемента массива |
💡 Продвинутые фишки
Прерывание циклов
break— полностью выходит из цикла.continue— пропускает текущую итерацию.
Пример с break:
for (let i = 0; i < 10; i++) {
if (i === 5) break; // цикл остановится на 5
console.log(i); // 0, 1, 2, 3, 4
}
Метки для вложенных циклов
Позволяют выйти из нескольких циклов сразу:
outerLoop: for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (i === 1 && j === 1) break outerLoop; // выйдет из обоих циклов
console.log(`i=${i}, j=${j}`);
}
}
🛠️ Практика — сделай сам!
Задача: Напишите цикл, который выводит в консоль числа от 100 до 0 с шагом 10.
Подсказка: Подойдёт for или while.
🔍 Ответ
for (let i = 100; i >= 0; i -= 10) {
console.log(i);
}
🎯 Итоги
- Циклы — мощный инструмент для работы с повторяющимися операциями.
- Выбирайте цикл в зависимости от задачи:
forдля точного контроля,whileдля гибкости,for...ofдля массивов. - Используйте
breakиcontinueдля управления потоком выполнения.
Теперь — в бой! Пишите код, экспериментируйте, и пусть циклы работают на вас. 🚀