break и continue в JavaScript
- Что делают break и continue
- Остановка цикла - break
- Пропуск итерации - continue
- continue в цикле while
- Вложенные циклы
- break в switch
- Итого
break и continue помогают управлять работой цикла. Они нужны, когда обычного условия в круглых скобках уже недостаточно или когда отдельные шаги цикла нужно обработать по-разному.
break полностью завершает цикл.
continue завершает только текущую итерацию и переводит выполнение к следующей.
Что делают break и continue
Посмотрим на коротком примере.
for (let n = 1; n <= 5; n++) {
if (n === 3) {
continue;
}
if (n === 5) {
break;
}
console.log(n);
}
Результат:
1
2
4
Когда n равно 3, срабатывает continue, поэтому console.log(n) пропускается.
Когда n равно 5, срабатывает break, поэтому цикл полностью завершается.
Остановка цикла - break
Инструкция break используется, когда цикл нужно остановить раньше обычного условия.
for (let n = 1; n <= 10; n++) {
if (n === 4) {
break;
}
console.log(n);
}
Результат:
1
2
3
Цикл должен был идти до 10, но остановился на числе 4. Само число 4 в консоль не попало, потому что break выполнился раньше console.log().
Частый сценарий для break - поиск первого подходящего значения.
let users = ['Анна', 'Игорь', 'Мария', 'Олег'];
let searchedUser = 'Мария';
for (let user of users) {
if (user === searchedUser) {
console.log('Пользователь найден');
break;
}
}
Когда нужный пользователь найден, нет смысла продолжать перебор массива.
Пропуск итерации - continue
Инструкция continue не останавливает весь цикл. Она пропускает текущий шаг и запускает следующий.
for (let n = 1; n <= 5; n++) {
if (n === 3) {
continue;
}
console.log(n);
}
Результат:
1
2
4
5
Число 3 пропущено, но цикл продолжил работу.
continue удобно использовать, когда часть значений нужно игнорировать.
let numbers = [1, 2, 3, 4, 5, 6];
for (let number of numbers) {
if (number % 2 !== 0) {
continue;
}
console.log(number);
}
Результат:
2
4
6
Если число нечетное, цикл переходит к следующему элементу. До console.log() доходят только четные числа.
continue в цикле while
В цикле while с continue нужно следить, чтобы счетчик успевал измениться до пропуска итерации.
let n = 0;
while (n < 5) {
n++;
if (n === 3) {
continue;
}
console.log(n);
}
Результат:
1
2
4
5
Здесь n++ стоит до continue, поэтому цикл не застрянет на одном и том же значении.
Если перенести изменение счетчика ниже continue, можно случайно получить бесконечный цикл.
Вложенные циклы
Если один цикл находится внутри другого, обычный break или continue влияет только на ближайший цикл.
for (let row = 1; row <= 3; row++) {
for (let column = 1; column <= 3; column++) {
if (column === 2) {
break;
}
console.log(row + ':' + column);
}
}
Результат:
1:1
2:1
3:1
break остановил внутренний цикл с column, но внешний цикл с row продолжил работу.
Для выхода из нескольких уровней циклов существуют метки, но это отдельная тема. В большинстве обычных задач лучше сначала подумать, можно ли упростить структуру кода.
break в switch
break используется не только в циклах. Он также часто встречается в конструкции switch.
let status = 'success';
switch (status) {
case 'success':
console.log('Готово');
break;
case 'error':
console.log('Ошибка');
break;
}
В switch инструкция break завершает выполнение текущего блока case. Это не цикл, но идея похожая: остановить выполнение в нужном месте.
Итого
1. break полностью завершает цикл.
2. continue пропускает текущую итерацию и запускает следующую.
3. В for, while, do…while и for…of эти инструкции работают одинаково по смыслу, но в while важно не забывать обновлять счетчик.
4. Во вложенных циклах обычный break и continue относятся к ближайшему циклу.
5. break также используется в switch, чтобы завершить выполнение выбранного case.