all-threads-bot

Frontender`s Spectre

JavaScript | Практика #181 | Генераторы | ★★★★☆

27 апреля 2023 г., 13:16

<p><strong>Ответ: <code>['a', 'b', 'c']</code> и <code>a</code>.</strong></p> <p dir="auto">Используя ключевое слово <code>yield</code>, мы получаем значения в функции генератора. С помощью ключевого слова <code>yield*</code> мы можем получить значения из другой функции-генератора или итерируемого объекта (например, массива).</p> <p dir="auto">В <code>generatorOne</code> мы получаем весь массив <code>['a', 'b', 'c']</code>, используя ключевое слово <code>yield</code>. Значение свойства <code>value</code> для объекта, возвращаемого методом <code>next</code> для <code>one</code> (<code>one.next().value</code>), равно всему массиву <code>['a', 'b', 'c']</code>.</p> <pre class="language-javascript"><code>console.log(one.next().value) // ['a', 'b', 'c'] console.log(one.next().value) // undefined</code></pre> <p dir="auto">В файле <code>generatorTwo</code> мы используем ключевое слово <code>yield*</code>. Это означает, что первое полученное значение <code>two</code> равно первому полученному значению в итераторе. Итератор - это массив <code>['a', 'b', 'c']</code>. Первым полученным значением является <code>a</code>, поэтому в первый раз, когда мы вызываем <code>two.next().value</code>, возвращается <code>a</code>.</p> <pre class="language-javascript"><code>console.log(two.next().value) // 'a' console.log(two.next().value) // 'b' console.log(two.next().value) // 'c' console.log(two.next().value) // undefined</code></pre>

<p><strong>Ответ: <code>['a', 'b', 'c']</code> и <code>a</code>.</strong></p> <p dir="auto">Используя ключевое слово <code>yield</code>, мы получаем значения в функции генератора. С помощью ключевого слова <code>yield*</code> мы можем получить значения из другой функции-генератора или итерируемого объекта (например, массива).</p> <p dir="auto">В <code>generatorOne</code> мы получаем весь массив <code>['a', 'b', 'c']</code>, используя ключевое слово <code>yield</code>. Значение свойства <code>value</code> для объекта, возвращаемого методом <code>next</code> для <code>one</code> (<code>one.next().value</code>), равно всему массиву <code>['a', 'b', 'c']</code>.</p> <pre class="language-javascript"><code>console.log(one.next().value) // ['a', 'b', 'c'] console.log(one.next().value) // undefined</code></pre> <p dir="auto">В файле <code>generatorTwo</code> мы используем ключевое слово <code>yield*</code>. Это означает, что первое полученное значение <code>two</code> равно первому полученному значению в итераторе. Итератор - это массив <code>['a', 'b', 'c']</code>. Первым полученным значением является <code>a</code>, поэтому в первый раз, когда мы вызываем <code>two.next().value</code>, возвращается <code>a</code>.</p> <pre class="language-javascript"><code>console.log(two.next().value) // 'a' console.log(two.next().value) // 'b' console.log(two.next().value) // 'c' console.log(two.next().value) // undefined</code></pre>
Ниже представлено пояснение.

Ответ: ['a', 'b', 'c'] и a.

Используя ключевое слово yield, мы получаем значения в функции генератора. С помощью ключевого слова yield* мы можем получить значения из другой функции-генератора или итерируемого объекта (например, массива).

В generatorOne мы получаем весь массив ['a', 'b', 'c'], используя ключевое слово yield. Значение свойства value для объекта, возвращаемого методом next для one (one.next().value), равно всему массиву ['a', 'b', 'c'].

console.log(one.next().value) // ['a', 'b', 'c']
console.log(one.next().value) // undefined

В файле generatorTwo мы используем ключевое слово yield*. Это означает, что первое полученное значение two равно первому полученному значению в итераторе. Итератор - это массив ['a', 'b', 'c']. Первым полученным значением является a, поэтому в первый раз, когда мы вызываем two.next().value, возвращается a.

console.log(two.next().value) // 'a'
console.log(two.next().value) // 'b'
console.log(two.next().value) // 'c'
console.log(two.next().value) // undefined