Skip to main content

Ключове слово continue

Ключове слово continue використовується всередині циклів і означає «пропустити решту поточної ітерації та перейти до наступної». Тобто цикл не переривається повністю, як при break, а просто переходить до наступного кроку.

Теорія

TL;DR

  • continue пропускає весь код, що лишився в тілі ітерації, і передає керування наступній ітерації.
  • break зупиняє цикл повністю, а continue зупиняє лише поточний прохід.
  • Працює в усіх циклах: for, while, do...while, for...of, for...in. Поза циклом це синтаксична помилка.
  • У for після continue виконується крок (i++), у while керування одразу йде на перевірку умови.
  • З міткою continue label переходить до наступної ітерації позначеного зовнішнього циклу.
  • У forEach continue не працює; його роль там виконує return.

Швидкий приклад

javascript
for (let i = 1; i <= 5; i++) { if (i === 3) continue; // skip 3 console.log(i); }

Результат:

text
1 2 4 5

Що сталося: на i = 3 спрацював continue, JavaScript пропустив console.log(i) і одразу перейшов до наступної ітерації (i = 4).

continue у while

javascript
let i = 0; while (i < 5) { i++; if (i === 3) continue; console.log(i); }

Результат:

text
1 2 4 5

Щойно i === 3, оператор continue пропускає console.log(i), і цикл повертається до перевірки умови i < 5. Тут критично важливо, що i++ стоїть до continue: якби лічильник збільшувався в кінці тіла, continue пропускав би його і цикл став би нескінченним. У for такої проблеми немає, бо крок i++ є частиною заголовка циклу і виконується завжди.

Різниця між break і continue

Ключове словоЩо робить
breakПовністю зупиняє цикл
continueПропускає решту тіла циклу і переходить до наступної ітерації

Приклад, де вони працюють разом:

javascript
for (let i = 1; i <= 5; i++) { if (i === 3) continue; // skip 3 if (i === 5) break; // stop the loop console.log(i); }

Результат:

text
1 2 4

Фільтрація ітерацій за умовою

javascript
for (let i = 1; i <= 10; i++) { if (i % 2 === 0) continue; // skip even numbers console.log(i); }

Результат:

text
1 3 5 7 9

Зручно, коли дію треба виконувати лише для певних елементів. Такий «ранній вихід з ітерації» тримає основне тіло циклу без зайвої вкладеності if, тому код читається легше.

Мітки і вкладені цикли

continue можна застосовувати з міткою (label), якщо треба перейти до наступної ітерації зовнішнього циклу.

javascript
outer: for (let i = 1; i <= 3; i++) { for (let j = 1; j <= 3; j++) { if (j === 2) continue outer; // skip the rest of the inner loop console.log(`i=${i}, j=${j}`); } }

Результат:

text
i=1, j=1 i=2, j=1 i=3, j=1

Без мітки continue завжди стосується найближчого циклу, тому вийти на рівень вище можна лише через мітку або через винесення внутрішнього циклу в окрему функцію.

Підсумкова таблиця

ПитанняВідповідь
Що робить continueПропускає код ітерації, що лишився, і переходить до наступної
Де використовуєтьсяТільки в циклах (for, while, do...while, for...of, for...in)
Відмінність від breakbreak повністю зупиняє цикл
Робота з міткамиcontinue label продовжує позначений зовнішній цикл

Типові помилки

  • Ставити continue у while до збільшення лічильника і отримувати нескінченний цикл.
  • Очікувати, що continue працює в forEach або map. Це методи, а не цикли; там роль пропуску виконує return, а повністю перервати перебір не можна.
  • Плутати continue з break: перший пропускає крок, другий завершує цикл.
  • Використовувати continue поза циклом, наприклад у switch чи просто в тілі функції. Це SyntaxError.
  • Зловживати мітками: два чи три рівні вкладеності з мітками читаються гірше, ніж винесена функція з return.
  • Думати, що continue пропускає й фінальний блок ітерації на зразок try ... finally. Блок finally виконається в будь-якому разі.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.