Heim > Artikel > Web-Frontend > Erläuterung der Generatorfunktionen in ES6 (Codebeispiele)
Dieser Artikel bietet Ihnen eine Einführung in die Verwendung des Validators in Laravel (Codebeispiele). Ich hoffe, er wird Ihnen als Referenz dienen.
Eigentlich weiß ich nicht, wie ich die ersten paar Kapitel schreiben soll, weil sie immer einige tiefere Dinge beinhalten, wie zum Beispiel 可迭代对象
, 生成器
, 迭代器
und so weiter Es könnte besser sein, diese Dinge nach Abschluss dieser Serie zu organisieren. Schreiben Sie jetzt einfach dort, wo Sie sie organisieren.
function* name([param[, param[, ... param]]]) { statements }
Verwenden Sie function* als Deklarationskennung, um anzuzeigen, dass es sich um einen Generator handelt Funktion
Name ist der Funktionsname
param ist der Parametername, der 255 sein kann
Anweisungen ist der Funktionskörper
Die Generatorfunktion kann während der Ausführung angehalten und bei Bedarf fortgesetzt werden
Die Generatorfunktion gibt ein Iteratorobjekt zurück und wird nicht sofort ausgeführt
Die Generatorfunktion kann return verwenden, wird es aber tun nach der Rückkehr nicht mehr iterierbar sein
function* idMaker(begin=0){ while(true) yield begin++; } let maker=idMaker(0) console.log(maker.next().value) // 0 console.log(maker.next().value) // 1 console.log(maker.next().value) // 2 console.log(maker.next().value) // 3 ...
Erklärung:
Der Aufruf der Generatorfunktion gibt eine Iteration zurück. Iterator ist ein Objekt, das die erfüllt Iteratorprotokoll. Einfach ausgedrückt muss das Iteratorobjekt eine nächste Funktion haben, die wir als Iterationsergebnisobjekt bezeichnen. Dieses Objekt enthält die folgenden zwei Attribute:
Wert : Das Ergebnis dieser Iteration
fertig: Boolescher Wert, wenn wahr, bedeutet dies, dass die Iteration nicht fortgesetzt werden kann, was bedeutet, dass die Iteration fortgesetzt werden kann.
Rufen Sie die nächste Funktion auf, die die Generatorfunktion tatsächlich ausführt, bis sie die Ausbeute erreicht, und das Iterationsergebnisobjekt zurückgibt
id
Growerfunction* idMaker(begin=0){ while(begin<3) yield begin++; } let maker=idMaker(0) console.log(maker.next()) // {value: 0, done: false} console.log(maker.next()) // {value: 1, done: false} console.log(maker.next()) // {value: 2, done: false} console.log(maker.next()) // {value: undefined, done: true}
Wenn die Funktionsausführung abgeschlossen ist, wird „done“ automatisch zu „true“
function *createIterator() { let first = yield 1; let second = yield first + 2; // 4 + 2 // first =4 是next(4)将参数赋给上一条的 yield second + 3; // 5 + 3 } let iterator = createIterator(); console.log(iterator.next()); // "{ value: 1, done: false }" console.log(iterator.next(4)); // "{ value: 6, done: false }" console.log(iterator.next(5)); // "{ value: 8, done: false }" console.log(iterator.next()); // "{ value: undefined, done: true }"
Das ist beim ersten Aufruf des Iterators ziemlich mühsam zu erklären .next() gibt 1 zurück und der Code stoppt bei yield 1, aber wir speichern das Ergebnis von yield 1 in der ersten Variablen. Tatsächlich wird dieser Vorgang nicht ausgeführt, wenn wir iterator.next(4) zum zweiten Mal ausführen. Beachten Sie, dass hier ein Parameter 4 übergeben wird. Zu diesem Zeitpunkt wird 4 als Rückgabewert von yield 1 betrachtet und first zugewiesen, sodass die zweite Ausführung als Ausführungssequenz von let first=4 betrachtet werden kann.
function* yieldAndReturn() { yield "1"; return "2"; yield "3"; } var gen = yieldAndReturn() console.log(gen.next()); // { value: "1", done: false } console.log(gen.next()); // { value: "2", done: true } console.log(gen.next()); // { value: undefined, done: true }
Das obige ist der detaillierte Inhalt vonErläuterung der Generatorfunktionen in ES6 (Codebeispiele). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!