В процессе программирования на JavaScript иногда возникает необходимость выйти из нескольких вложенных циклов одновременно.
Например, при вводе координат (i, j) с помощью prompt во вложенных циклах, мы можем столкнуться с ситуацией, когда пользователь отменяет ввод. В таких случаях стандартный оператор break может прервать только внутренний цикл, что может быть недостаточно. В этой связи в JavaScript используются метки, позволяющие управлять выполнением циклов на разных уровнях.
Для решения задачи выхода из нескольких уровней цикла в JavaScript применяют метки. Метка представляет собой идентификатор, предшествующий ключевому слову for:
labelName: for (...) {
// код
}
Директива break с указанием метки ищет ближайший внешний цикл с этой меткой и прерывает его выполнение. Рассмотрим пример:
outer: for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
let input = prompt(`Значение на координатах (${i},${j})`, '');
// если пустая строка или Отмена, то выйти из обоих циклов
if (!input) break outer;
// обработать значения...
}
}
alert('Готово!');
В данном коде при отмене ввода пользователем (пустая строка или отмена), break outer; прерывает внешний цикл с меткой outer, и управление передается к alert('Готово!').
Важно отметить, что директива continue также может быть использована с меткой, переходя на следующую итерацию цикла с указанной меткой.
Метки не позволяют «прыгнуть» куда угодно:
Следует отметить, что метки не предоставляют возможности передачи управления произвольному участку кода. Например, оператор break должен находиться внутри блока кода. Тем не менее, это обычно не является проблемой, поскольку break используется внутри циклов в большинстве случаев.
label: {
// ...
break label; // это работает
// ...
}
Использование меток с операторами break и continue в JavaScript предоставляет эффективный способ управления выполнением вложенных циклов. Этот инструмент полезен при обработке ситуаций, когда необходимо прервать выполнение нескольких циклов одновременно. Правильное использование меток повышает читаемость кода и делает его более гибким при решении сложных задач.
Будьте первым