diff options
Diffstat (limited to 'files')
-rw-r--r-- | files/ja/_redirects.txt | 4 | ||||
-rw-r--r-- | files/ja/_wikihistory.json | 6 | ||||
-rw-r--r-- | files/ja/conflicting/web/javascript/reference/operators/yield/index.html | 8 | ||||
-rw-r--r-- | files/ja/web/javascript/reference/operators/yield/index.html | 93 |
4 files changed, 56 insertions, 55 deletions
diff --git a/files/ja/_redirects.txt b/files/ja/_redirects.txt index d12d9c381d..7b40df7497 100644 --- a/files/ja/_redirects.txt +++ b/files/ja/_redirects.txt @@ -3112,7 +3112,7 @@ /ja/docs/JavaScript/Reference/Statements/var /ja/docs/Web/JavaScript/Reference/Statements/var /ja/docs/JavaScript/Reference/Statements/while /ja/docs/Web/JavaScript/Reference/Statements/while /ja/docs/JavaScript/Reference/Statements/with /ja/docs/Web/JavaScript/Reference/Statements/with -/ja/docs/JavaScript/Reference/Statements/yield /ja/docs/conflicting/Web/JavaScript/Reference/Operators/yield +/ja/docs/JavaScript/Reference/Statements/yield /ja/docs/Web/JavaScript/Reference/Operators/yield /ja/docs/JavaScript/Reference/文 /ja/docs/Web/JavaScript/Reference/Statements /ja/docs/JavaScript/Reference/文/for...of /ja/docs/Web/JavaScript/Reference/Statements/for...of /ja/docs/JavaScript/Same_origin_policy_for_JavaScript /ja/docs/Web/Security/Same-origin_policy @@ -5035,7 +5035,7 @@ /ja/docs/Web/JavaScript/Reference/Properties_Index /ja/docs/Web/JavaScript/Reference /ja/docs/Web/JavaScript/Reference/Reserved_Words /ja/docs/conflicting/Web/JavaScript/Reference/Lexical_grammar /ja/docs/Web/JavaScript/Reference/Statements/default /ja/docs/Web/JavaScript/Reference/Statements/switch -/ja/docs/Web/JavaScript/Reference/Statements/yield /ja/docs/conflicting/Web/JavaScript/Reference/Operators/yield +/ja/docs/Web/JavaScript/Reference/Statements/yield /ja/docs/Web/JavaScript/Reference/Operators/yield /ja/docs/Web/JavaScript/Reference/arrow_functions /ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions /ja/docs/Web/JavaScript/Reference/template_strings /ja/docs/Web/JavaScript/Reference/Template_literals /ja/docs/Web/JavaScript/Same_origin_policy_for_JavaScript /ja/docs/Web/Security/Same-origin_policy diff --git a/files/ja/_wikihistory.json b/files/ja/_wikihistory.json index 23abe2d6c6..be0b6686ef 100644 --- a/files/ja/_wikihistory.json +++ b/files/ja/_wikihistory.json @@ -49362,12 +49362,6 @@ "Potappo" ] }, - "conflicting/Web/JavaScript/Reference/Operators/yield": { - "modified": "2019-01-16T17:00:33.767Z", - "contributors": [ - "ethertank" - ] - }, "conflicting/Web/JavaScript/Reference/Operators_f71733c8e7001a29c3ec40d8522a4aca": { "modified": "2020-03-12T19:35:34.796Z", "contributors": [ diff --git a/files/ja/conflicting/web/javascript/reference/operators/yield/index.html b/files/ja/conflicting/web/javascript/reference/operators/yield/index.html deleted file mode 100644 index b2aad251c0..0000000000 --- a/files/ja/conflicting/web/javascript/reference/operators/yield/index.html +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: yield -slug: conflicting/Web/JavaScript/Reference/Operators/yield -translation_of: Web/JavaScript/Reference/Operators/yield -translation_of_original: Web/JavaScript/Reference/Statements/yield -original_slug: Web/JavaScript/Reference/Statements/yield ---- -<p>『 <a href="/ja/docs/JavaScript/New_in_JavaScript/1.7">JavaScript 1.7 の新機能</a>』、『<a href="/ja/docs/JavaScript/Guide/Iterators_and_Generators">イテレータとジェネレータ</a>』 を参照して下さい。</p> diff --git a/files/ja/web/javascript/reference/operators/yield/index.html b/files/ja/web/javascript/reference/operators/yield/index.html index e0d0653718..2b2c68b691 100644 --- a/files/ja/web/javascript/reference/operators/yield/index.html +++ b/files/ja/web/javascript/reference/operators/yield/index.html @@ -8,40 +8,36 @@ tags: - JavaScript - Language feature - Operator - - ジェネレーター - - 反復処理 - - 演算子 - - 言語機能 +browser-compat: javascript.operators.yield translation_of: Web/JavaScript/Reference/Operators/yield --- <div>{{jsSidebar("Operators")}}</div> -<p><code>yield</code> キーワードは、ジェネレーター関数 ({{jsxref("Statements/function*", "function*")}} または<a href="/ja/docs/Web/JavaScript/Reference/Statements/Legacy_generator_function">古いジェネレーター関数</a>) のを一時停止したり再開したりするために使用します。</p> +<p><code>yield</code> キーワードは、ジェネレーター関数 ({{jsxref("Statements/function*", "function*")}} または<a href="/ja/docs/Archive/Web/JavaScript/Legacy_generator_function_statement">古いジェネレーター関数</a>) を一時停止したり再開したりするために使用します。</p> <div>{{EmbedInteractiveExample("pages/js/expressions-yield.html", "taller")}}</div> -<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div> +<h2 id="Syntax">構文</h2> -<h2 id="Syntax" name="Syntax">構文</h2> - -<pre class="syntaxbox">[<var>rv</var>] = <strong>yield</strong> [<var>expression</var>]</pre> +<pre + class="brush: js">[<var>rv</var>] = <strong>yield</strong> [<var>expression</var>]</pre> <dl> - <dt><code><var>expression</var></code> {{optional_inline}}</dt> - <dd><a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols#iterator">iterator プロトコル</a>経由でジェネレーター関数が返す値を定義します。省略した場合、代わりに <code>undefined</code> が返されます。</dd> - <dt><code><var>rv</var></code> {{optional_inline}}</dt> - <dd> - <p>ジェネレーターの実行を再開する <code>next()</code> メソッドに渡したオプションの値を受け取ります。</p> - </dd> + <dt><code><var>expression</var></code> {{optional_inline}}</dt> + <dd><a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols#iterator">iterator プロトコル</a>経由でジェネレーター関数が返す値を定義します。省略した場合、代わりに <code>undefined</code> が返されます。</dd> + <dt><code><var>rv</var></code> {{optional_inline}}</dt> + <dd> + <p>ジェネレーターの実行を再開する <code>next()</code> メソッドに渡したオプションの値を受け取ります。</p> + </dd> </dl> -<h2 id="Description" name="Description">解説</h2> +<h2 id="Description">解説</h2> -<p><code>yield</code> キーワードは、ジェネレーター関数の実行を一時停止し、ジェネレーターの呼び出し元に <code>yield</code> キーワードに続く値を戻します。これは、 <code>return</code> キーワードのジェネレーター版と考えることができます。</p> +<p><code>yield</code> キーワードは、ジェネレーター関数の実行を一時停止し、ジェネレーターの呼び出し元に <code>yield</code> キーワードに続く値を返します。これは、 <code>return</code> キーワードのジェネレーター版と考えることができます。</p> <p><code>yield</code> はそれを含むジェネレーター関数の中で直接しか呼び出すことしかできません。呼び出し先の関数やコールバックから呼び出すことはできません。</p> -<p><code>yield</code> キーワードはジェネレーターの <code>next()</code> メソッドを呼び出させ、 <code>value</code> と <code>done</code> の2つのプロパティを持つ <code>IteratorResult</code> オブジェクトを返します。 <code>value</code> プロパティは <code>yield</code> 式の評価結果であり、 <code>done</code> は <code>false</code>、すなわちジェネレーター関数が完全には完了していないことを示します。</p> +<p><code>yield</code> キーワードはジェネレーターの <code>next()</code> メソッドを呼び出させ、 <code>value</code> と <code>done</code> の 2 つのプロパティを持つ <code>IteratorResult</code> オブジェクトを返します。 <code>value</code> プロパティは <code>yield</code> 式の評価結果であり、 <code>done</code> は <code>false</code>、すなわちジェネレーター関数が完全には完了していないことを示します。</p> <p><code>yield</code> 式によって実行が停止されると、ジェネレーターの <code>next()</code> メソッドが呼び出されるまで、ジェネレーターのコード実行は一時停止します。ジェネレーターの <code>next()</code> メソッドが呼ばれるたびに、ジェネレーターの実行が再開され、次のうちのいずれかに達するまで実行されます。</p> @@ -56,7 +52,13 @@ translation_of: Web/JavaScript/Reference/Operators/yield <p>ジェネレーターのコードパス、 <code>yield</code> 演算子、新しい開始値を {{jsxref("Generator.prototype.next()")}} に渡すことで指定することができる機能により、ジェネレーターは大きな力と制御を提供します。</p> -<h2 id="Examples" name="Examples">例</h2> +<div class="notecard warning"> + <p><strong>警告:</strong> 残念ながら <code>next()</code> は非対称ですが、仕方がありません。常に現在中断している <code>yield</code> に値を送りますが、次の <code>yield</code> のオペランドを返します。</p> +</div> + +<h2 id="Examples">例</h2> + +<h3 id="Using_yield">Using yield</h3> <p>次のコードはジェネレーター関数の定義例です。</p> @@ -75,30 +77,43 @@ console.log(appleStore.next()) // { value: 7, done: false } console.log(appleStore.next()) // { value: 5, done: false } console.log(appleStore.next()) // { value: undefined, done: true }</pre> -<h2 id="Specifications" name="Specifications">仕様書</h2> +<p>You can also send a value with next(value) into the generator. 'step' evaluates as a + return value in this syntax [<var>rv</var>] = <strong>yield</strong> + [<var>expression</var>]</p> + +<pre class="brush: js">function* counter(value) { + let step; + + while (true) { + step = yield ++value; + + if (step) { + value += step; + } + } +} + +const generatorFunc = counter(0); +console.log(generatorFunc.next().value); // 1 +console.log(generatorFunc.next().value); // 2 +console.log(generatorFunc.next().value); // 3 +console.log(generatorFunc.next(10).value); // 14 +console.log(generatorFunc.next().value); // 15 +console.log(generatorFunc.next(10).value); // 26</pre> + +<h2 id="Specifications">仕様書</h2> -<table class="standard-table"> - <thead> - <tr> - <th scope="col">仕様書</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ESDraft', '#prod-YieldExpression', 'Yield')}}</td> - </tr> - </tbody> -</table> +{{Specifications}} -<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> +<h2 id="Browser_compatibility">ブラウザーの互換性</h2> -<p>{{Compat("javascript.operators.yield")}}</p> +<p>{{Compat}}</p> -<h2 id="See_also" name="See_also">関連情報</h2> +<h2 id="See_also">関連情報</h2> <ul> - <li><a href="/ja/docs/Web/JavaScript/Guide/The_Iterator_protocol">Iterator プロトコル</a></li> - <li>{{jsxref("Statements/function*", "function*")}}</li> - <li>{{jsxref("Operators/function*", "function* expression")}}</li> - <li>{{jsxref("Operators/yield*", "yield*")}}</li> + <li><a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols">Iterator プロトコル</a></li> + <li>{{jsxref("Statements/function*", "function*")}}</li> + <li>{{jsxref("Operators/function*", "function* expression")}}</li> + <li>{{jsxref("Operators/yield*", "yield*")}}</li> </ul> |