Skip to main content

Оператор label

Оператор label (або мітка) - це рідкісний і маловживаний інструмент у JavaScript, який дозволяє давати ім'я блоку коду або циклу, а потім керувати виконанням за допомогою break або continue, вказуючи, який саме цикл перервати чи продовжити.


Синтаксис

javascript
labelName: { // інструкції }

Або найчастіше:

javascript
labelName: for (let i = 0; i < 5; i++) { ... }

Навіщо потрібен label

Зазвичай використовується, коли є вкладені цикли, і потрібно вийти не лише з внутрішнього, а й із зовнішнього циклу одразу.

Без міток break і continue впливають лише на найближчий цикл.


Приклад без мітки

javascript
for (let i = 0; i < 3; i++) { for (let j = 0; j < 3; j++) { if (i === 1 && j === 1) break; console.log(`i = ${i}, j = ${j}`); } }

Результат:

javascript
i = 0, j = 0 i = 0, j = 1 i = 0, j = 2 i = 1, j = 0

Тут break зупиняє лише внутрішній цикл, а зовнішній (i) продовжується.


Приклад з міткою (label)

javascript
outerLoop: // мітка для зовнішнього циклу for (let i = 0; i < 3; i++) { for (let j = 0; j < 3; j++) { if (i === 1 && j === 1) break outerLoop; console.log(`i = ${i}, j = ${j}`); } }

Результат:

javascript
i = 0, j = 0 i = 0, j = 1 i = 0, j = 2 i = 1, j = 0

Тут break outerLoop перериває весь зовнішній цикл, а не тільки внутрішній.


Приклад з continue і міткою

Можна також пропустити ітерацію зовнішнього циклу, якщо виконується умова:

javascript
outer: for (let i = 0; i < 3; i++) { for (let j = 0; j < 3; j++) { if (j === 2) continue outer; // пропускає поточний i console.log(`i = ${i}, j = ${j}`); } }

Результат:

javascript
i = 0, j = 0 i = 0, j = 1 i = 1, j = 0 i = 1, j = 1 i = 2, j = 0 i = 2, j = 1

Важливо

  • Мітки не створюють нових областей видимості: це просто імена, до яких можна звертатися через break або continue.
  • Не можна використовувати label для довільних переходів, як goto в інших мовах (наприклад, C).
  • Код з мітками часто вважається менш читабельним, і його використовують вкрай рідко: лише якщо без них не можна елегантно вийти з вкладених циклів.

Коротко запам'ятати

Що робитьПриклад
Дає ім'я циклу або блокуouter: for (...) { ... }
Дозволяє вийти із зовнішнього циклуbreak outer;
Дозволяє пропустити ітерацію зовнішнього циклуcontinue outer;
Не створює нову область видимостіТак
Використовувати часто?Ні, лише за потреби

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

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

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