ホームページ  >  記事  >  ウェブフロントエンド  >  es6 における収量とは何を意味しますか?

es6 における収量とは何を意味しますか?

WBOY
WBOYオリジナル
2022-03-30 18:25:443193ブラウズ

ES6 では、yield はジェネレーターが自身の操作を内部的に一時停止するために使用するキーワードです。yield の後にジェネレーター関数またはその他の反復可能オブジェクトが続き、yield 式の戻り値はその背後にある反復可能オブジェクトです。反復が完了したときの戻り値、構文は「function*gen(){yieldexpression}」です。

es6 における収量とは何を意味しますか?

このチュートリアルの動作環境: Windows 10 システム、ECMAScript バージョン 6.0、Dell G3 コンピューター。

es6 における yield の意味

yield は、ES6 のジェネレーターが自身の操作を内部的に一時停止するために使用するキーワードです。

「内部」という言葉に注意してください。ジェネレータ関数は外部ロジックによって一時停止することはできませんが、yield を通じてのみ一時停止できます。

yield キーワードの後に​​変数を続けることも、単独で使用することもできます。 yield の後に変数が続く場合 (yield 式と呼ぶことができます)、ジェネレーター関数が一時停止後に実行を再開すると、渡されたパラメーターは、yield 式全体の値として後続の論理演算に参加します。 ##yield の後に変数が追跡されない場合。yield は単独で使用され、一時停止ジェネレータ関数としてのみ使用されます。ジェネレータが動作を再開した後、渡されたパラメータは後続の動作に参加するために yield の値として使用されます。

#例

ステップ 1、ジェネレーター関数を作成します。

function* numbers () {
     yield 1;
     yield 2;
   
     return 'numbers';
 }
ステップ 2、上記のジェネレーター関数の外側にプロキシを作成します。

function* delegate () {
     var str = yield* numbers();
     console.log(str);
     
     yield 3;
     return 'delegate';
}
ステップ 3、イテレータを構築します。

var iterator = delegate();
ステップ 4、反復結果を出力します。

 /**
  * 第一次输出结果
  * { value: 1, done: false }
  */
 console.log(iterator.next()) // 第一次输出
 
 /**
  * 第二次输出结果
  * { value: 2, done: false }
  */
 console.log(iterator.next()) // 第二次输出
 
 /**
  * 第三次输出结果
  * numbers
  * { value: 3, done: false }
  */
 console.log(iterator.next()) // 第三次输出
 
 /**
  * 第四次输出结果
  * { value: 'delegate', done: true }
  */
 console.log(iterator.next()) // 第四次输出
出力結果説明

3回目の出力では2行の内容が出力されます。 1行目の内容はデリゲート関数のconsole.log(str)の出力で、値はnumbers関数の戻り値です。

4 回目の出力では、value がデリゲート関数の戻り値である内容が 1 行出力されます。この時点で、done プロパティは true です。

【関連する推奨事項:

JavaScript ビデオ チュートリアル

Web フロントエンド ]

以上がes6 における収量とは何を意味しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。