Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Ключове слово break». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**`break` перериває виконання циклу або блоку `switch` раніше, ніж вони завершаться природним шляхом, і передає керування на рядок одразу після конструкції.** У циклах (`for`, `while`, `do...while`, `for...of`, `for...in`) він зупиняє перебір повністю, а в `switch` виходить із блоку після потрібного `case` і не дає виконанню «провалитися» в наступні гілки. ```javascript for (let i = 0; i < 10; i++) { if (i === 5) break; // stop the loop when i is 5 console.log(i); } // 0, 1, 2, 3, 4 ``` **Ключове:** `break` можна ставити лише всередині циклу або `switch`; якщо треба пропустити одну ітерацію, а не завершити цикл, використовують `continue`.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення**Ключове слово `break` у JavaScript використовується для переривання виконання циклу або блоку `switch` раніше, ніж він завершиться природним шляхом.** Керування одразу переходить на наступний рядок після конструкції, яку перервали. ## Теорія ### TL;DR - `break` негайно завершує найближчий цикл або блок `switch`. - У циклах він потрібен, щоб зупинити перебір, коли результат уже знайдено. - У `switch` він не дає виконанню «провалитися» в наступні `case` (fall-through). - Ставити `break` можна лише всередині циклу або `switch`, інакше буде `SyntaxError`. - Щоб пропустити лише одну ітерацію, а не завершити цикл, є `continue`. - З міткою `break label` виходить із зовнішнього циклу, а не з внутрішнього. ### Швидкий приклад ```javascript for (let i = 0; i < 10; i++) { if (i === 5) { break; // stop the loop when i is 5 } console.log(i); } console.log('Цикл завершено'); ``` Результат: ```text 0 1 2 3 4 Цикл завершено ``` Цикл припиняється, щойно `i` стає рівним `5`, і решта ітерацій не виконується. ### `break` у циклах `for`, `while`, `do...while` `break` негайно завершує виконання циклу і передає керування на наступний рядок коду після нього. Це основний інструмент для пошуку: щойно потрібний елемент знайдено, немає сенсу перебирати решту. ```javascript const users = [ { id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'Maria' }, ]; let found = null; for (const user of users) { if (user.id === 2) { found = user; break; // no reason to keep scanning } } console.log(found); // { id: 2, name: 'Bob' } ``` Те саме працює у `while` і `do...while`. Важливо: `break` виходить лише з одного, найближчого циклу, тож у вкладених циклах він перерве тільки внутрішній. ### `break` у конструкції `switch` Тут `break` використовується, щоб вийти з блоку `switch` після виконання потрібного `case`. Без нього виконання «провалиться» в наступний `case`. ```javascript const day = 2; switch (day) { case 1: console.log('Понеділок'); break; case 2: console.log('Вівторок'); break; case 3: console.log('Середа'); break; default: console.log('Інший день'); } ``` Результат: ```text Вівторок ``` Якби в `case 2` не було зупинки, виконалися б усі наступні `case` до найближчого `break` або до кінця блоку. ### `break` з міткою у вкладених циклах Якщо треба вийти одразу з кількох рівнів вкладеності, цикл позначають міткою (label) і виходять із неї. ```javascript outer: for (let i = 0; i < 3; i++) { for (let j = 0; j < 3; j++) { if (i * j === 2) break outer; // leave both loops at once console.log(i, j); } } ``` Результат: ```text 0 0 0 1 0 2 1 0 1 1 ``` Альтернатива мітці: винести вкладені цикли в окрему функцію і вийти через `return`; часто це читабельніше. ### Порівняння з `continue` | Ключове слово | Що робить | Де працює | | --- | --- | --- | | `break` | Повністю зупиняє цикл або виходить із `switch` | Цикли, `switch` | | `continue` | Пропускає решту поточної ітерації | Тільки цикли | ### Типові помилки - Використовувати `break` у `forEach`, `map` чи `filter`. Це методи, а не цикли, тому буде `SyntaxError`; для дострокового виходу беріть `for...of`, `some` або `find`. - Забути `break` у гілці `switch` і отримати fall-through, тобто виконання кількох гілок замість однієї. - Вважати, що `break` у вкладених циклах вийде з усіх. Він виходить лише з найближчого, для решти потрібна мітка. - Плутати `break` і `continue`: перший завершує цикл, другий лише пропускає крок. - Ставити `break` в умовному блоці `if` поза циклом. Поза циклом і `switch` це синтаксична помилка. - Розраховувати, що `break` скасує блок `finally`: код у `try ... finally` виконається перед виходом у будь-якому разі.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.