break и continue
Цикл может пройти каждый круг до конца — пока вы им не управляете. Иногда ответ уже есть и нужно остановиться. Иногда элемент лишний и нужно его пропустить, потом идти дальше. break сразу выходит из цикла. continue переходит к следующему кругу. То же семейство циклов; два коротких слова меняют траекторию.
Что делает break?
break завершает ближайший цикл прямо сейчас. Последующие круги не выполняются. Код после цикла в скрипте всё равно выполняется. Думайте: «Готово — выходи.» Обычно при поиске первого совпадения без обхода остального.
break против continue
📊 Управление циклом на ходу
| Ключевое слово | Эффект | Повседневный смысл |
|---|---|---|
break |
выйти из цикла сейчас | нашли первое совпадение; дальше ждать не нужно |
continue |
пропустить остаток этого круга, начать следующий | игнорировать плохой элемент; продолжить обход |
| ничего | каждый круг выполняет всё тело | каждый элемент обрабатывается одинаково |
| после цикла | код под циклом всё ещё выполняется | break выходит только из цикла, не из всего скрипта |
Берите break, когда дальнейшие круги бесполезны. Берите continue, когда один круг должен молчать, но обход продолжается. Не путайте — ошибка выглядит «почти верно» и её трудно заметить.
const nums = [2, 4, 7, 8];
let found = null;
for (let i = 0; i < nums.length; i++) {
if (nums[i] === 7) {
found = nums[i];
break;
}
}
console.log(found);
Остановитесь на совпадении
Цикл смотрит 2, затем 4, затем 7. На 7 сохраняет значение и делает break. 8 не выполняется. found равен 7. Без break цикл шёл бы дальше после известного ответа.
for (let i = 1; i <= 5; i++) {
if (i % 2 === 0) {
continue;
}
console.log(i);
}
Пропустите круг и идите дальше
Когда i чётный, continue переходит к следующему i. Строка console.log для этих кругов не выполняется. Вы видите 1, 3, 5. Цикл не остановился — просто обошёл чётные числа.
let n = 1;
while (n < 20) {
if (n === 5) {
break;
}
console.log(n);
n = n + 1;
}
Рано выйти из while
while шёл бы, пока n < 20. При n === 5 break выходит. Напечатано: 1–4. Подходит к «иди до правила остановки, потом выйди» без всех возможных кругов.
const colors = ["red", "skip", "blue"];
for (const c of colors) {
if (c === "skip") {
continue;
}
console.log(c);
}
Пропускайте значения в for...of
for...of по-прежнему обходит значения. continue игнорирует "skip" и печатает red, затем blue. Идея управления одна для for, while и for...of — только ближайший цикл.
const parts = ["A", "x", "B", "x", "C"];
let msg = "";
for (const p of parts) {
if (p === "x") {
continue;
}
msg = msg + p;
}
console.log(msg);
Фильтруйте при склейке
Каждый "x" пропускается; буквы добавляются. Результат: ABC. Та же привычка склейки из прошлых уроков о циклах — continue это ворота фильтра в обходе.
Покажите break и continue на странице
Пройдите короткий список, пропустите метку через continue, рано остановитесь через break после маркера, запишите результат на страницу.
<!DOCTYPE html>
<html>
<head>
<title>break / continue — page</title>
</head>
<body>
<p id="out">…</p>
<script>
const items = ["a", "skip", "b", "stop", "c"];
let line = "";
for (const item of items) {
if (item === "skip") {
continue;
}
if (item === "stop") {
break;
}
line = line + item + " ";
}
let box = document.getElementById("out");
box.textContent = "kept=" + line.trim();
</script>
</body>
</html>
Страница показывает kept=a b. "skip" проигнорирован; "stop" закрыл цикл до "c". Измените массив, обновите страницу, прочитайте новую строку. Следующий урок — функции: блоки работы, которые вызывают по имени.
Попробуйте сами
- В
forпо[3, 9, 1]сделайтеbreakпри значении9и сохраните. - Выведите только нечётные от
1до6, пропуская чётные черезcontinue. - В
whileостановитесь черезbreak, когда счётчик станет3. - С
for...ofпо["ok", "no", "ok"]пройдите"no"черезcontinue. - Склейте
["1", "-", "2"]в12, пропуская"-". - В HTML-демо измените только массив, обновите и прочитайте
kept=.
Частые ошибки
- Думать, что
continueвыходит из всего цикла (этоbreak) - Ставить работу после
breakв том же круге — она никогда не выполнится - В
whileделатьcontinueбез обновления счётчика — риск бесконечного цикла - Использовать
break, когда нужен был только пропуск - Ждать, что
breakпокинет весь скрипт — только ближайший цикл
Кратко
break— выйти из цикла сейчас; следующие круги не выполняютсяcontinue— пропустить остаток этого круга; начать следующий- Работает в
for,whileиfor...of - Поиск часто с
break; фильтр часто сcontinue - Код после цикла после
breakвсё ещё выполняется - Дальше: функции — назовите блок работы и вызовите его
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху