← Назад к вопросам

Как не сломать цикл while?

2.0 Middle🔥 121 комментариев
#JavaScript Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI3 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое бесконечный цикл while?

Бесконечный цикл while — это цикл, условие выхода которого никогда не становится ложным. Браузер "замирает", скрипт останавливается, страница становится неответчивой. Это одна из самых частых ошибок начинающих разработчиков.

Основная причина: неправильное условие

Самая частая ошибка — забыть обновить переменную в условии цикла:

// Неправильно — i никогда не увеличивается
let i = 0;
while (i < 10) {
  console.log(i);
  // Забыли i++
}

// Правильно — увеличиваем i каждую итерацию
let i = 0;
while (i < 10) {
  console.log(i);
  i++; // Обновляем переменную
}

Как не допустить ошибку?

1. Используй for вместо while для счётчиков

Синтаксис for явно показывает инициализацию, условие и инкремент:

// Понятнее и безопаснее
for (let i = 0; i < 10; i++) {
  console.log(i);
}

// Эквивалентно, но опаснее:
let i = 0;
while (i < 10) {
  console.log(i);
  i++;
}

2. Проверяй условие выхода

Перед циклом убедись, что условие действительно может стать ложным:

// Неправильно — condition никогда не меняется
const condition = true;
while (condition) {
  console.log('Stuck!');
}

// Правильно — добавь логику для выхода
let condition = true;
let count = 0;
while (condition && count < 5) {
  console.log('Iteration', count);
  count++;
  if (count === 3) condition = false;
}

3. Используй do...while с осторожностью

Этот вариант выполняет цикл хотя бы один раз:

let i = 10;
do {
  console.log('Executed');
  i++;
} while (i < 5); // Условие ложно, но блок выполнился один раз

Практические примеры

Обработка пользовательского ввода

let userInput = '';
while (userInput !== 'quit') {
  userInput = prompt('Enter command (type quit to exit):');
  if (userInput === 'quit') break;
  console.log('Command:', userInput);
}

Работа с массивом

const arr = [1, 2, 3, 4, 5];
let index = 0;

while (index < arr.length) {
  console.log(arr[index]);
  index++;
}

Отладка бесконечного цикла

Если создал бесконечный цикл:

  1. Останови код (Ctrl+C или перезагрузи страницу)
  2. Добавь console.log перед циклом
  3. Проверь условие выхода
  4. Убедись, что переменная изменяется в цикле

Вывод

Главное: убедись, что условие может стать ложным и переменная в условии изменяется в цикле. Используй for для счётчиков, while для сложных условий.

Как не сломать цикл while? | PrepBro