diff options
Diffstat (limited to 'files/uk/web/javascript/reference/statements/break/index.html')
-rw-r--r-- | files/uk/web/javascript/reference/statements/break/index.html | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/files/uk/web/javascript/reference/statements/break/index.html b/files/uk/web/javascript/reference/statements/break/index.html new file mode 100644 index 0000000000..700d495bd6 --- /dev/null +++ b/files/uk/web/javascript/reference/statements/break/index.html @@ -0,0 +1,151 @@ +--- +title: break +slug: Web/JavaScript/Reference/Statements/break +tags: + - JavaScript + - Довідка + - Оператор +translation_of: Web/JavaScript/Reference/Statements/break +--- +<div>{{jsSidebar("Statements")}}</div> + +<p>Оператор <strong>break</strong> перериває виконання поточного циклу, перемикача {{jsxref("Statements/switch", "switch")}} або {{jsxref("Statements/label", "поміченого")}} блоку і передає контроль до наступної за перерваним блоком інструкції.</p> + +<div>{{EmbedInteractiveExample("pages/js/statement-break.html")}}</div> + + + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code>break [<em>label</em>];</code></pre> + +<dl> + <dt><code>label</code> {{optional_inline}}</dt> + <dd>Ідентифікатор, асоційований з міткою конструкції. Якщо конструкція не є циклом або перемикачем {{jsxref("Statements/switch", "switch")}}, цей параметр є обов'язковим.</dd> +</dl> + +<h2 id="Опис">Опис</h2> + +<p>Оператор <code>break</code> має необов'язкову мітку, яка дозволяє програмі переривати виконання поміченої конструкції. Оператор <code>break</code> має бути розташований всередині конструкції, на яку посилається. Вона може бути будь-яким {{jsxref("Statements/block", "блоком")}} інструкцій; це необов'язково має бути цикл.</p> + +<p>Оператор <code>break</code>, з міткою або без неї, не може використовуватися всередині тіла фукнції, що вкладена у цикл, перемикач або помічений блок, який має перервати оператор <code>break</code>.</p> + +<h2 id="Приклади">Приклади</h2> + +<p>Наступна фукнція містить оператор <code>break</code>, що перериває цикл {{jsxref("Statements/while", "while")}}, коли <code>i</code> дорівнює 3, а після цього поветає значення 3 * <code>x</code>.</p> + +<pre class="brush:js;highlight:[6];">function testBreak(x) { + var i = 0; + + while (i < 6) { + if (i == 3) { + break; + } + i += 1; + } + + return i * x; +}</pre> + +<p>Наступний код використовує оператори <code>break</code> з поміченими блоками. Оператор <code>break</code> має знаходитися всередині будь-якої мітки, на яку посилається. Зауважте, що <code>inner_block</code> вкладений у <code>outer_block</code>.</p> + +<pre class="brush:js;highlight:[1,2,4];">outer_block: { + inner_block: { + console.log('1'); + break outer_block; // перериває обидва inner_block та outer_block + console.log(':-('); // пропускається + } + console.log('2'); // пропускається +} +</pre> + +<p>Наступний код також використовує оператори <code>break</code> з поміченими блоками, але генерує помилку SyntaxError, тому що оператор <code>break</code> знаходиться всередині <code>block_1</code>, але посилається на <code>block_2</code>. Оператор <code>break</code> завжди має знаходитися всередині будь-якої мітки, на яку посилається.</p> + +<pre class="brush:js;highlight:[1,3,6];">block_1: { + console.log('1'); + break block_2; // SyntaxError: label not found +} + +block_2: { + console.log('2'); +} +</pre> + +<p>Помилки SyntaxError також генеруються у наступних прикладах, які використовують оператори <code>break</code> всередині функцій, що вкладені у цикл чи помічений блок, що їх мають перервати оператори <code>break</code>.</p> + +<pre class="brush:js;highlight:[1,3,6];">function testBreak(x) { + var i = 0; + + while (i < 6) { + if (i == 3) { + (function() { + break; + })(); + } + i += 1; + } + +return i * x; +} + +testBreak(1); // SyntaxError: Illegal break statement +</pre> + +<pre class="brush:js;highlight:[1,3,6];">block_1: { + console.log('1'); + ( function() { + break block_1; // SyntaxError: Undefined label 'block_1' + })(); +} +</pre> + +<h2 id="Специфікації">Специфікації</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Специфікація</th> + <th scope="col">Статус</th> + <th scope="col">Коментар</th> + </tr> + <tr> + <td>{{SpecName('ES1')}}</td> + <td>{{Spec2('ES1')}}</td> + <td>Початкове визначення. Версія без мітки.</td> + </tr> + <tr> + <td>{{SpecName('ES3')}}</td> + <td>{{Spec2('ES3')}}</td> + <td>Додано версію з міткою.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-12.8', 'Break statement')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-break-statement', 'Break statement')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-break-statement', 'Break statement')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> + + + +<p>{{Compat("javascript.statements.break")}}</p> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li>{{jsxref("Statements/continue", "continue")}}</li> + <li>{{jsxref("Statements/label", "label")}}</li> + <li>{{jsxref("Statements/switch", "switch")}}</li> +</ul> |