Skip to main content

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

Ключове слово 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 виконається перед виходом у будь-якому разі.

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

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

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