Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Ключове слово continue». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**`continue` пропускає решту коду поточної ітерації циклу і одразу переходить до наступної.** На відміну від `break`, цикл не зупиняється повністю: керування повертається до кроку та перевірки умови. Працює лише всередині циклів (`for`, `while`, `do...while`, `for...of`, `for...in`), а з міткою (label) може перейти до наступної ітерації зовнішнього циклу. ```javascript for (let i = 1; i <= 5; i++) { if (i === 3) continue; // skip 3 console.log(i); } // 1, 2, 4, 5 ``` **Ключове:** `continue` це «перейти до наступної ітерації», зручний спосіб відфільтрувати непотрібні кроки, не перериваючи цикл.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення**Ключове слово `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`) | | Відмінність від `break` | `break` повністю зупиняє цикл | | Робота з мітками | `continue label` продовжує позначений зовнішній цикл | ### Типові помилки - Ставити `continue` у `while` до збільшення лічильника і отримувати нескінченний цикл. - Очікувати, що `continue` працює в `forEach` або `map`. Це методи, а не цикли; там роль пропуску виконує `return`, а повністю перервати перебір не можна. - Плутати `continue` з `break`: перший пропускає крок, другий завершує цикл. - Використовувати `continue` поза циклом, наприклад у `switch` чи просто в тілі функції. Це `SyntaxError`. - Зловживати мітками: два чи три рівні вкладеності з мітками читаються гірше, ніж винесена функція з `return`. - Думати, що `continue` пропускає й фінальний блок ітерації на зразок `try ... finally`. Блок `finally` виконається в будь-якому разі.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.