Что означает ошибка SyntaxError: unlabeled break must be inside loop or switch

Нельзя выйти из цикла, если его нет

Что означает ошибка SyntaxError: unlabeled break must be inside loop or switch

Ситуация: мы пишем программу для фитнес-трекера и нам нужна функция, которая остановится после выполнения 100 подходов. Всё просто: расчехляем JavaScript и пишем обычный код:

let score = 0;
function increment() {
  // если уже 100 повторений
  if (score === 100)
    break;  // выходим из функции
  }
  // если дошли досюда, увеличиваем счётчик на единицу
  score++;
}

Но при запуске неожиданно получаем сообщение об ошибке:

❌ SyntaxError: 'break' is only valid inside a switch or loop statement.

Что означает ошибка SyntaxError: unlabeled break must be inside loop or switch

Что это значит: то, что мы пытались остановить функцию командой, которая для этого не предназначена и работает только в циклах.

Как исправить ошибку SyntaxError: 'break' is only valid inside a switch or loop statement

Ошибка здесь в том, что мы используем неправильную команду. Смотрите:

  • break — это для выхода из циклов;
  • return — для выхода из функций.

Получается, что для исправления нам просто нужно заменить одно на другое:

let score = 0;
function increment() {
  if (score === 100) {
    return;
  }
  score++;
}

Ещё бывает так: например, нам нужно перебрать массив в поисках нужного элемента, а как нашли — выйти из функции. Иногда здесь начинающие программисты тоже путаются (потому что перебор — это как бы цикл) и используют breakp:

array.forEach((value) => {
  if (value === 5) {
    break; // ❌ будет ошибка, потому что это всё-таки не цикл
  }
  // делаем что-то, если условие не выполнилось
});

Вместо этого здесь тоже нужен return, потому что это колбэк-функция и выходить из неё нужно как из обычной функции:

array.some((value) => {
  if (value === 5) {
    return true; // ✅ выходим из функции
  }
  // делаем что-то, если условие не выполнилось
  return false; // и тоже правильно выходим из функции
});

А если прям хочется использовать break — делаем из функции цикл, например так:

for (const value of array) {
  if (value === 5) {
    break; // ✅ выходим из цикла
  }
  // что-то делаем дальше, если нужно
}

Бонус для читателей

Если вам интересно погрузиться в мир ИТ и при этом немного сэкономить, держите наш промокод на курсы Практикума. Он даст вам скидку при оплате, поможет с льготной ипотекой и даст безлимит на маркетплейсах. Ладно, окей, это просто скидка, без остального, но хорошая. 

Вам слово

Приходите к нам в соцсети поделиться своим мнением об ошибке и почитать, что пишут другие. А ещё там выходит дополнительный контент, которого нет на сайте — шпаргалки, опросы и разная дурка. В общем, вот тележка, вот ВК — велком!

Обложка:

Алексей Сухов

Корректор:

Александр Зубов

Вёрстка:

Егор Степанов

Соцсети:

Юлия Зубарева

Вам может быть интересно
easy