Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: break, nested loops, loop control, JavaScript

Как break ведёт себя во вложенных циклах — выходит из всех или только из одного?

Проверяет понимание работы оператора break во вложенных циклах и его влияния на поток выполнения.

Короткий ответ

Оператор break выходит только из того цикла, в котором он непосредственно находится. Во вложенных циклах break прерывает только внутренний цикл, а внешний продолжает выполняться. Чтобы выйти из всех циклов, нужно использовать метки (labels) или флаги.

Длинный ответ

Как работает break во вложенных циклах

Оператор break в языках программирования, таких как JavaScript, Python или Java, завершает выполнение только самого внутреннего цикла, в котором он вызван. Это означает, что если у вас есть два вложенных цикла, break внутри внутреннего цикла прервет только его, а внешний цикл продолжит работу.

Пример без меток

for (let i = 0; i < 3; i++) {
  for (let j = 0; j < 3; j++) {
    if (j === 1) break; // выходит только из цикла по j
    console.log(i, j);
  }
}
// Вывод: (0,0), (1,0), (2,0)

Здесь break прерывает внутренний цикл при j === 1, но внешний цикл продолжает выполняться для всех i.

Выход из всех циклов с помощью меток

Чтобы выйти из всех вложенных циклов сразу, можно использовать метки (labels). Метка ставится перед внешним циклом, и break с этой меткой прерывает весь помеченный блок.

outerLoop: for (let i = 0; i < 3; i++) {
  for (let j = 0; j < 3; j++) {
    if (j === 1) break outerLoop; // выходит из обоих циклов
    console.log(i, j);
  }
}
// Вывод: (0,0)

Метки поддерживаются в JavaScript, Java, C/C++ и некоторых других языках, но не во всех (например, в Python меток нет, там используются флаги или исключения).

Альтернативный подход: флаги

Если метки не поддерживаются или нежелательны, можно использовать булеву переменную-флаг для управления выходом.

let shouldBreak = false;
for (let i = 0; i < 3 && !shouldBreak; i++) {
  for (let j = 0; j < 3; j++) {
    if (j === 1) {
      shouldBreak = true;
      break;
    }
    console.log(i, j);
  }
}
// Вывод: (0,0)

Этот метод работает во всех языках и часто используется для читаемости.

Вывод

Используйте break без меток для выхода из одного цикла, а для прерывания всех вложенных циклов применяйте метки или флаги. Выбор зависит от языка и стиля кода, но метки делают код более лаконичным, а флаги — более универсальными.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#break

#nested loops

#loop control

#JavaScript

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию