Ситуация: мы пишем программу для фитнес-трекера и нам нужна функция, которая остановится после выполнения 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: '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; // ✅ выходим из цикла
}
// что-то делаем дальше, если нужно
}
Бонус для читателей
Если вам интересно погрузиться в мир ИТ и при этом немного сэкономить, держите наш промокод на курсы Практикума. Он даст вам скидку при оплате, поможет с льготной ипотекой и даст безлимит на маркетплейсах. Ладно, окей, это просто скидка, без остального, но хорошая.
Вам слово
Приходите к нам в соцсети поделиться своим мнением об ошибке и почитать, что пишут другие. А ещё там выходит дополнительный контент, которого нет на сайте — шпаргалки, опросы и разная дурка. В общем, вот тележка, вот ВК — велком!