私はgenerator functions on MDNにつまずいたとものを私に困惑することは、次の例です:なぜjavascriptジェネレータ関数のyield文が.next()のパラメータを返すのですか?
function* logGenerator() {
console.log(yield);
console.log(yield);
console.log(yield);
}
var gen = logGenerator();
// the first call of next executes from the start of the function
// until the first yield statement
gen.next();
gen.next('pretzel'); // pretzel
gen.next('california'); // california
gen.next('mayonnaise'); // mayonnaise
console.log
の引数であるyield
文は発電機の.next()
メソッドに渡されたパラメータを返し、なぜ私が理解していないことです。これは空のyield
が.next()
メソッドの最初のパラメータの値を返す必要があるためですか?
gen.next(1,2,3); // the printed value is 1, the 2 and 3 are ignored
// and the actual yielded value is undefined
またジェネレータ関数の本体内.next()
方法の他のパラメータにアクセスする方法があります:
は、私はまたのような上記のステートメントを確認するように見えるいくつかのより多くの例を、試してみましたか?
yield文がこれらの値をconsole.log
に戻しているのに対し、実際にはジェネレータの出力として出力されませんでした。私はそれが非常に混乱していると言う必要があります。
...これは起こりそうなことなので、なぜこれがあなたを混乱させるのですか? – user2357112
これは、 'yield'式が評価するものです。 – user2357112
@ user2357112私は上記のコードで参照されるパラメータが表示されないので、混乱します。答えからリンクを読んだら、それはすべて意味をなさないが、最初にそれを見たとき、私はそれを理解しなかった。副次的なこととして、 'function * x(){yield yield yield;}'のようなこともできます。 – Jakub