diff options
Diffstat (limited to 'files/ru/web/javascript/reference/statements/for...of/index.html')
-rw-r--r-- | files/ru/web/javascript/reference/statements/for...of/index.html | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/files/ru/web/javascript/reference/statements/for...of/index.html b/files/ru/web/javascript/reference/statements/for...of/index.html index 5d056de8c4..7641d14bad 100644 --- a/files/ru/web/javascript/reference/statements/for...of/index.html +++ b/files/ru/web/javascript/reference/statements/for...of/index.html @@ -16,7 +16,7 @@ translation_of: Web/JavaScript/Reference/Statements/for...of <h2 id="Синтаксис">Синтаксис</h2> -<pre class="syntaxbox notranslate">for (<em>variable</em> of <em>iterable</em>) { +<pre class="syntaxbox">for (<em>variable</em> of <em>iterable</em>) { <em>statement</em> } </pre> @@ -32,7 +32,7 @@ translation_of: Web/JavaScript/Reference/Statements/for...of <h3 id="Обход_jsxrefArray">Обход {{jsxref("Array")}}</h3> -<pre class="notranslate"><code>let iterable = [10, 20, 30]; +<pre><code>let iterable = [10, 20, 30]; for (let value of iterable) { value += 1; @@ -44,7 +44,7 @@ for (let value of iterable) { <p>Можно также использовать <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const"><code>const</code></a> вместо <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let"><code>let</code></a>, если не нужно переназначать переменные внутри блока.</p> -<pre class="notranslate"><code>let iterable = [10, 20, 30]; +<pre><code>let iterable = [10, 20, 30]; for (const value of iterable) { console.log(value); @@ -55,7 +55,7 @@ for (const value of iterable) { <h3 id="Обход_jsxrefString">Обход {{jsxref("String")}}</h3> -<pre class="notranslate"><code>let iterable = 'boo'; +<pre><code>let iterable = 'boo'; for (let value of iterable) { console.log(value); @@ -66,7 +66,7 @@ for (let value of iterable) { <h3 id="Обход_jsxrefTypedArray">Обход {{jsxref("TypedArray")}}</h3> -<pre class="notranslate"><code>let iterable = new Uint8Array([0x00, 0xff]); +<pre><code>let iterable = new Uint8Array([0x00, 0xff]); for (let value of iterable) { console.log(value); @@ -76,7 +76,7 @@ for (let value of iterable) { <h3 id="Обход_jsxrefMap">Обход {{jsxref("Map")}}</h3> -<pre class="notranslate"><code>let iterable = new Map([['a', 1], ['b', 2], ['c', 3]]); +<pre><code>let iterable = new Map([['a', 1], ['b', 2], ['c', 3]]); for (let entry of iterable) { console.log(entry); @@ -94,7 +94,7 @@ for (let [key, value] of iterable) { <h3 id="Обход_jsxrefSet">Обход {{jsxref("Set")}}</h3> -<pre class="notranslate"><code>let iterable = new Set([1, 1, 2, 2, 3, 3]); +<pre><code>let iterable = new Set([1, 1, 2, 2, 3, 3]); for (let value of iterable) { console.log(value); @@ -105,7 +105,7 @@ for (let value of iterable) { <h3 id="Обход_объекта_jsxrefarguments">Обход объекта {{jsxref("arguments")}} </h3> -<pre class="notranslate"><code>(function() { +<pre><code>(function() { for (let argument of arguments) { console.log(argument); } @@ -119,7 +119,7 @@ for (let value of iterable) { <p>Обход DOM коллекций наподобие {{domxref("NodeList")}}: следующий пример добавляет класс <code>read</code> параграфам, являющимся непосредственными потомками статей:</p> -<pre class="notranslate"><code>// Примечание: работает только на платформах, где +<pre><code>// Примечание: работает только на платформах, где // реализован NodeList.prototype[Symbol.iterator] let articleParagraphs = document.querySelectorAll('article > p'); @@ -131,7 +131,7 @@ for (let paragraph of articleParagraphs) { <p>В циклах <code>for...of</code> аварийный выход осуществляется через <code>break</code>, <code>throw</code> или <code>return</code>. Во всех вариантах итератор завершается.</p> -<pre class="notranslate"><code>function* foo(){ +<pre><code>function* foo(){ yield 1; yield 2; yield 3; @@ -147,7 +147,7 @@ for (let o of foo()) { <p>Вы можете выполнять обход <a href="/en-US/docs/Web/JavaScript/Reference/Statements/function*">генераторов</a>, вот пример:</p> -<pre class="brush:js notranslate">function* fibonacci() { // функция-генератор +<pre class="brush:js">function* fibonacci() { // функция-генератор let [prev, curr] = [0, 1]; for (;;) { [prev, curr] = [curr, prev + curr]; @@ -167,7 +167,7 @@ for (let n of fibonacci()) { <p>Генераторы нельзя использовать дважды, даже если цикл <code>for...of </code> завершится аварийно, например, через оператор {{jsxref("Statements/break", "break")}} . При выходе из цикла генератор завершается, и любые попытки получить из него значение обречены.</p> -<pre class="brush: js example-bad notranslate"><code>var gen = (function *(){ +<pre class="brush: js example-bad"><code>var gen = (function *(){ yield 1; yield 2; yield 3; @@ -186,7 +186,7 @@ for (let o of gen) { <p>Кроме того, можно сделать обход объекта, явно реализующего <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable">iterable</a>:</p> -<pre class="notranslate"><code>var iterable = { +<pre><code>var iterable = { [Symbol.iterator]() { return { i: 0, @@ -217,7 +217,7 @@ for (var value of iterable) { <p>Следующий пример показывает различия в работе циклов <code>for...of</code> и <code>for...in</code> при обходе {{jsxref("Array")}}.</p> -<pre class="notranslate"><code>Object.prototype.objCustom = function() {}; +<pre><code>Object.prototype.objCustom = function() {}; Array.prototype.arrCustom = function() {}; let iterable = [3, 5, 7]; @@ -239,7 +239,7 @@ for (let i of iterable) { <p>Разберёмся шаг за шагом в вышеописанном коде.</p> -<pre class="notranslate"><code>Object.prototype.objCustom = function() {}; +<pre><code>Object.prototype.objCustom = function() {}; Array.prototype.arrCustom = function() {}; let iterable = [3, 5, 7]; @@ -247,13 +247,13 @@ iterable.foo = 'hello';</code></pre> <p>Каждый объект унаследует метод <code>objCustom</code> и каждый массив {{jsxref("Array")}} унаследует метод <code>arrCustom</code> благодаря созданию их в {{jsxref("Object.prototype")}} и {{jsxref("Array.prototype")}}. Объект <code>iterable</code> унаследует методы <code>objCustom</code> и <code>arrCustom</code> из-за <a href="/ru/docs/Web/JavaScript/Inheritance_and_the_prototype_chain">наследования через прототип</a>.</p> -<pre class="notranslate"><code>for (let i in iterable) { +<pre><code>for (let i in iterable) { console.log(i); // выведет 0, 1, 2, "foo", "arrCustom", "objCustom" }</code></pre> <p>Цикл выводит только <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Enumerability_and_ownership_of_properties">перечисляемые свойства</a> объекта <code>iterable</code>, в порядке их создания. Он не выводит <strong>значения</strong> <code>3</code>, <code>5</code>, <code>7</code> и <code>hello</code> поскольку они <strong>не являются</strong> перечисляемыми, фактически они вообще не являются свойствами, они являются <strong>значениями</strong>. Выводятся же <strong>имена свойств и методов</strong>, например <code>arrCustom</code> и <code>objCustom</code>. Если вы ещё не совсем поняли, по каким свойствам осуществляется обход, вот дополнительное объяснение того, как работает {{jsxref("Statements/for...in", "array iteration and for...in", "#Array_iteration_and_for...in")}} .</p> -<pre class="notranslate"><code>for (let i in iterable) { +<pre><code>for (let i in iterable) { if (iterable.hasOwnProperty(i)) { console.log(i); // выведет 0, 1, 2, "foo" } @@ -261,7 +261,7 @@ iterable.foo = 'hello';</code></pre> <p>Цикл аналогичен предыдущему, но использует {{jsxref("Object.prototype.hasOwnProperty()", "hasOwnProperty()")}} для проверки того, собственное ли это свойство объекта или унаследованное. Выводятся только собственные свойства. Имена <code>0</code>, <code>1</code>, <code>2</code> и <code>foo</code> принадлежат только экземпляру объекта (<strong>не унаследованы</strong>). Методы <code>arrCustom</code> и <code>objCustom</code> не выводятся, поскольку они <strong>унаследованы</strong>.</p> -<pre class="notranslate"><code>for (let i of iterable) { +<pre><code>for (let i of iterable) { console.log(i); // выведет 3, 5, 7 }</code></pre> |