Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Оператор label». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**`label` (мітка)** - рідкісний інструмент у JavaScript, який дає ім'я блоку коду або циклу, щоб потім керувати виконанням через `break` чи `continue`, вказуючи, який саме цикл перервати або продовжити. **Ключове:** мітки не створюють нову область видимості і використовуються вкрай рідко, лише коли без них не можна елегантно вийти з вкладених циклів.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняОператор `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;` | | Не створює нову область видимості | Так | | Використовувати часто? | Ні, лише за потреби |Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.