function* generatorFunction() {
yield (yield 1)(yield 2)(yield 3)();
}
var iterator = generatorFunction();
// [1, 2, 3]
var iteratedOver = [iterator.next().value, iterator.next().value, iterator.next().value];
これはどのように作用するのかよくわからない。ES6収率(収率1)(収率2)(収率3)(
yield
は機能参照を返しません。したがって、(yield 2)
のようなかっこのステートメントは何ですか - 体のない太った矢印の匿名機能ですか?そのような部分的なアプリケーションを使ってどのように呼び出されますか?
私はここに何かが欠けている、誰かが説明することができますか?
更新:3つのブラウザでみました、クローム50.0.2661.86、サファリ9.1(50.0.2661.86)は、Firefox 44.0.2、すべてがエラーなしで実行します。
ESFiddleもエラーなしで実行されます。
CommentersレポートBabelもエラーなしで実行されます。
質問の元はhttp://tddbin.com/#?kata=es6/language/generator/send-functionで、第2番目のカタです。
です。このコード例は私のために実行されません。 'Uncaught TypeError :(中間値)は関数ではありません。 ' –
' yield'は '.next(...)'に渡すものを返します。あなたは '.next()'を2回だけ呼び出されたことを幸運にも思っています。それは次回にスローされます。 – Bergi
@Ben:はい、しかし、それは質問をする...何がこのコードが最初に有効だったと信じるように導いたのですか?あなたはどこかでそれを見ましたか? –