aboutsummaryrefslogtreecommitdiff
path: root/files/de/web/javascript/reference/operators/yield_star_
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:41:15 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:41:15 -0500
commit4b1a9203c547c019fc5398082ae19a3f3d4c3efe (patch)
treed4a40e13ceeb9f85479605110a76e7a4d5f3b56b /files/de/web/javascript/reference/operators/yield_star_
parent33058f2b292b3a581333bdfb21b8f671898c5060 (diff)
downloadtranslated-content-4b1a9203c547c019fc5398082ae19a3f3d4c3efe.tar.gz
translated-content-4b1a9203c547c019fc5398082ae19a3f3d4c3efe.tar.bz2
translated-content-4b1a9203c547c019fc5398082ae19a3f3d4c3efe.zip
initial commit
Diffstat (limited to 'files/de/web/javascript/reference/operators/yield_star_')
-rw-r--r--files/de/web/javascript/reference/operators/yield_star_/index.html164
1 files changed, 164 insertions, 0 deletions
diff --git a/files/de/web/javascript/reference/operators/yield_star_/index.html b/files/de/web/javascript/reference/operators/yield_star_/index.html
new file mode 100644
index 0000000000..e0229f4c15
--- /dev/null
+++ b/files/de/web/javascript/reference/operators/yield_star_/index.html
@@ -0,0 +1,164 @@
+---
+title: yield*
+slug: Web/JavaScript/Reference/Operators/yield*
+tags:
+ - ECMAScript 2015
+ - Generators
+ - Iterable
+ - Iterator
+ - JavaScript
+ - Operator
+ - Reference
+translation_of: Web/JavaScript/Reference/Operators/yield*
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>Der <strong><code>yield*</code> Ausdruck</strong> wird eingesetzt um an einen anderen {{jsxref("Statements/function*", "Generator")}} oder iterierbares Objekt zu delegieren.</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-yieldasterisk.html")}}</div>
+
+
+
+<h2 id="Syntax">Syntax</h2>
+
+<pre class="syntaxbox"> yield* [[expression]];</pre>
+
+<dl>
+ <dt><code>expression</code></dt>
+ <dd>Der Ausdruck, der ein Iterierbares Objekt zurückgibt.</dd>
+</dl>
+
+<h2 id="Beschreibung">Beschreibung</h2>
+
+<p>Das <code>yield*</code> Ausdrucksliteral iteriert über den Operanden und gibt jeden zurückgegebenen Wert zurück.</p>
+
+<p>Der Wert von <code>yield*</code> Ausdrücken selbst ist der Wert der vom Iterator zurückgegeben wird, wenn der geschlossen wird (z. B., wenn <code>done</code> <code>true</code> ist).</p>
+
+<h2 id="Beispiele">Beispiele</h2>
+
+<h3 id="Zu_einem_anderen_Generator_delegieren">Zu einem anderen Generator delegieren</h3>
+
+<p>Im folgenden Code werden Werte von <code>g1()</code> und <code>g2()</code> beim Aufruf von <code>next() </code>zurückgegeben.</p>
+
+<pre class="brush: js">function* g1() {
+ yield 2;
+ yield 3;
+ yield 4;
+}
+
+function* g2() {
+ yield 1;
+ yield* g1();
+ yield 5;
+}
+
+var iterator = g2();
+
+console.log(iterator.next()); // {value: 1, done: false}
+console.log(iterator.next()); // {value: 2, done: false}
+console.log(iterator.next()); // {value: 3, done: false}
+console.log(iterator.next()); // {value: 4, done: false}
+console.log(iterator.next()); // {value: 5, done: false}
+console.log(iterator.next()); // {value: undefined, done: true}
+</pre>
+
+<h3 id="Andere_Iterable_Objekte">Andere Iterable Objekte</h3>
+
+<p>Neben Generatorobjekten kann <code>yield*</code> auch andere Iterable Objekte wie Arrays, Strings oder Arguments-Objekte zurückgeben.</p>
+
+<pre class="brush: js">function* g3() {
+ yield* [1, 2];
+ yield* '34';
+ yield* Array.from(arguments);
+}
+
+var iterator = g3(5, 6);
+
+console.log(iterator.next()); // {value: 1, done: false}
+console.log(iterator.next()); // {value: 2, done: false}
+console.log(iterator.next()); // {value: "3", done: false}
+console.log(iterator.next()); // {value: "4", done: false}
+console.log(iterator.next()); // {value: 5, done: false}
+console.log(iterator.next()); // {value: 6, done: false}
+console.log(iterator.next()); // {value: undefined, done: true}
+</pre>
+
+<h3 id="Der_Wert_des_yield*_Ausdrucks_selbst">Der Wert des <code>yield*</code> Ausdrucks selbst</h3>
+
+<p><code>yield*</code> ist ein Ausdruck, kein Statement, weshalb es zu einem Wert ausgewertet wird.</p>
+
+<pre class="brush: js">function* g4() {
+ yield* [1, 2, 3];
+ return 'foo';
+}
+
+var result;
+
+function* g5() {
+ result = yield* g4();
+}
+
+var iterator = g5();
+
+console.log(iterator.next()); // {value: 1, done: false}
+console.log(iterator.next()); // {value: 2, done: false}
+console.log(iterator.next()); // {value: 3, done: false}
+console.log(iterator.next()); // {value: undefined, done: true},
+  // g4() returned {value: 'foo', done: true} at this point
+
+console.log(result); // "foo"
+</pre>
+
+<h2 id="Spezifikationen">Spezifikationen</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Spezifikation</th>
+ <th scope="col">Status</th>
+ <th scope="col">Kommentar</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES2015', '#', 'Yield')}}</td>
+ <td>{{Spec2('ES2015')}}</td>
+ <td>Initiale Definition.</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#', 'Yield')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browserkompatibilität">Browserkompatibilität</h2>
+
+
+
+<p>{{Compat("javascript.operators.yield_star")}}</p>
+
+<h2 id="Firefox_spezifische_Hinweise">Firefox spezifische Hinweise</h2>
+
+<ul>
+ <li>Beginnend mit Gecko 33 {{geckoRelease(33)}}, wurde das Einlesen des yield Ausdrucks aktualisiert, um der ES2015 Spezifikation gerecht zu werden ({{bug(981599)}}):
+ <ul>
+ <li>Die Zeilenumbruchrestriktion ist jetzt Implementiert. Es ist kein Zeilenumbruch zwischen "yield" and "*" erlaubt. Code wie der folgende erzeugt einen {{jsxref("SyntaxError")}}:
+ <pre class="brush: js">function* foo() {
+ yield
+ *[];
+}</pre>
+ </li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Siehe_auch">Siehe auch</h2>
+
+<ul>
+ <li><a href="/de/docs/Web/JavaScript/Guide/The_Iterator_protocol">Das Iterator Protokoll</a></li>
+ <li>{{jsxref("Statements/function*", "function*")}}</li>
+ <li>{{jsxref("Operators/function*", "function* Ausdruck")}}</li>
+ <li>{{jsxref("Operators/yield", "yield")}}</li>
+</ul>