aboutsummaryrefslogtreecommitdiff
path: root/files/uk/web/javascript/reference/statements/label/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/uk/web/javascript/reference/statements/label/index.html')
-rw-r--r--files/uk/web/javascript/reference/statements/label/index.html182
1 files changed, 182 insertions, 0 deletions
diff --git a/files/uk/web/javascript/reference/statements/label/index.html b/files/uk/web/javascript/reference/statements/label/index.html
new file mode 100644
index 0000000000..b29fa8fb42
--- /dev/null
+++ b/files/uk/web/javascript/reference/statements/label/index.html
@@ -0,0 +1,182 @@
+---
+title: Мітка
+slug: Web/JavaScript/Reference/Statements/label
+tags:
+ - JavaScript
+translation_of: Web/JavaScript/Reference/Statements/label
+---
+<div>{{jsSidebar("Statements")}}</div>
+
+<p><strong>Мітка </strong>(label) може використовуватися з операторами {{jsxref("Statements/break", "break")}} та {{jsxref("Statements/continue", "continue")}}. Вона додається попереду виразу у вигляді ідентифікатора, на який можна посилатися.</p>
+
+<div>{{EmbedInteractiveExample("pages/js/statement-label.html")}}</div>
+
+
+
+<div class="note">
+<p><strong>Заувага:</strong> Використання помічених циклів або блоків є дуже нестандартним підходом. Зазвичай використовуються виклики функцій замість стрибків у циклах.</p>
+</div>
+
+<h2 id="Синтаксис">Синтаксис</h2>
+
+<pre class="syntaxbox notranslate"><em>label</em> :
+ <em>statement</em>
+</pre>
+
+<dl>
+ <dt><code>label</code></dt>
+ <dd>Будь-який ідентифікатор JavaScript, який не є зарезервованим словом.</dd>
+ <dt><code>statement</code></dt>
+ <dd>Інструкція JavaScript. Оператор <code>break</code> може використовуватися з будь-якою поміченою конструкцією, а оператор <code>continue</code> може використовуватися з поміченими циклами.</dd>
+</dl>
+
+<h2 id="Опис">Опис</h2>
+
+<p>Ви можете використати мітку, щоб ідентифікувати цикл, а потім скористатись операторами <code>break</code> чи <code>continue</code>, щоб вказати, що програма має перервати чи продовжити його виконання.</p>
+
+<p>Зауважте, що у JavaScript <em>немає</em> оператора <code>goto</code>, ви можете використовувати мітки лише з <code>break</code> або <code>continue</code>.</p>
+
+<p>У <a href="/uk/docs/Web/JavaScript/Reference/Strict_mode">строгому режимі</a> не можна використовувати "<code>let</code>" в якості імені мітки. Це спричинить викидання {{jsxref("SyntaxError")}} (let є зарезервованим ідентифікатором).</p>
+
+<h2 id="Приклади">Приклади</h2>
+
+<h3 id="Використання_поміченого_continue_з_циклами_for">Використання поміченого <code>continue</code> з циклами <code>for</code></h3>
+
+<pre class="brush: js notranslate">var i, j;
+
+loop1:
+for (i = 0; i &lt; 3; i++) { //Перший цикл for помічений як "loop1"
+ loop2:
+ for (j = 0; j &lt; 3; j++) { //Другий цикл for помічений як "loop2"
+ if (i === 1 &amp;&amp; j === 1) {
+ continue loop1;
+ }
+ console.log('i = ' + i + ', j = ' + j);
+ }
+}
+
+// Результат:
+// "i = 0, j = 0"
+// "i = 0, j = 1"
+// "i = 0, j = 2"
+// "i = 1, j = 0"
+// "i = 2, j = 0"
+// "i = 2, j = 1"
+// "i = 2, j = 2"
+// Зауважте, що пропущені як "i = 1, j = 1", так і "i = 1, j = 2"
+</pre>
+
+<h3 id="Використання_поміченого_оператора_continue">Використання поміченого оператора <code>continue</code></h3>
+
+<p>Маючи масив елементів та масив тестів, цей приклад рахує кількість елементів, які пройшли усі тести.</p>
+
+<pre class="brush: js notranslate">var itemsPassed = 0;
+var i, j;
+
+top:
+for (i = 0; i &lt; items.length; i++) {
+ for (j = 0; j &lt; tests.length; j++) {
+ if (!tests[j].pass(items[i])) {
+ continue top;
+ }
+ }
+
+ itemsPassed++;
+}</pre>
+
+<h3 id="Використання_поміченого_оператора_break_з_циклами_for">Використання поміченого оператора <code>break</code> з циклами <code>for</code></h3>
+
+<pre class="brush: js notranslate">var i, j;
+
+loop1:
+for (i = 0; i &lt; 3; i++) { //Перший цикл for помічений як "loop1"
+ loop2:
+ for (j = 0; j &lt; 3; j++) { //Другий цикл for помічений як "loop2"
+ if (i === 1 &amp;&amp; j === 1) {
+ break loop1;
+ }
+ console.log('i = ' + i + ', j = ' + j);
+ }
+}
+
+// Результат:
+// "i = 0, j = 0"
+// "i = 0, j = 1"
+// "i = 0, j = 2"
+// "i = 1, j = 0"
+// Зауважте різницю з попереднім прикладом з continue</pre>
+
+<h3 id="Використання_поміченого_оператора_break">Використання поміченого оператора <code>break</code></h3>
+
+<p>Маючи масив елементів та масив тестів, цей приклад визначає, чи усі елементи пройшли усі тести.</p>
+
+<pre class="brush: js notranslate">var allPass = true;
+var i, j;
+
+top:
+for (i = 0; items.length; i++)
+ for (j = 0; j &lt; tests.length; i++)
+ if (!tests[j].pass(items[i])) {
+ allPass = false;
+ break top;
+ }</pre>
+
+<h3 id="Використання_поміченого_блоку_з_оператором_break">Використання поміченого блоку з оператором <code>break</code></h3>
+
+<p>Ви можете використовувати мітки всередині звичайних блоків, але тільки оператор <code>break</code> може працювати з мітками не у циклах.</p>
+
+<pre class="brush: js notranslate">foo: {
+ console.log('пере');
+ break foo;
+ console.log('ця частина не виконається');
+}
+console.log('стрибнув');
+
+// цей код виведе:
+
+// "пере"
+// "стрибнув </pre>
+
+<h3 id="Помічені_оголошення_функцій">Помічені оголошення функцій</h3>
+
+<p>Починаючи з ECMAScript 2015, помічені оголошення функцій тепер стандартизовані для не строгого режиму у <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-labelled-function-declarations">додатку специфікації щодо веб-сумісності</a>.</p>
+
+<pre class="brush: js notranslate">L: function F() {}</pre>
+
+<p>Однак, у <a href="/uk/docs/Web/JavaScript/Reference/Strict_mode">строгому режимі</a> це викине помилку {{jsxref("SyntaxError")}}:</p>
+
+<pre class="brush: js notranslate">'use strict';
+L: function F() {}
+// SyntaxError: functions cannot be labelled</pre>
+
+<p><a href="/uk/docs/Web/JavaScript/Reference/Statements/function*">Функції-генератори</a> також не можуть мати мітки ні у строгому, ні у звичайному режимі:</p>
+
+<pre class="brush: js notranslate">L: function* F() {}
+// SyntaxError: generator functions cannot be labelled
+</pre>
+
+<h2 id="Специфікації">Специфікації</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Специфікація</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-labelled-statements', 'Labelled statement')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2>
+
+
+
+<p>{{Compat("javascript.statements.label")}}</p>
+
+<h2 id="Див._також">Див. також</h2>
+
+<ul>
+ <li>{{jsxref("Statements/break", "break")}}</li>
+ <li>{{jsxref("Statements/continue", "continue")}}</li>
+</ul>