Zamiast tego elementy obliczane są na bieżąco.
JavaScript W wersji ES6 (ES2015) języka JavaScript, gdy wprowadzono pętlę for..of wprowadzono także protokół iteratorów oraz generatory do języka. Iteratorami zostały tablice oraz ciągi znaków.
Przykład użycia protokołu iteratora: const text = "tekst"; const iterator = text[Symbol.iterator](); console.log(iterator + ''); // "[object String Iterator]"
console.log(iterator.next()); // { value: "t", done: false } console.log(iterator.next()); // { value: "e", done: false } console.log(iterator.next()); // { value: "k", done: false } console.log(iterator.next()); // { value: "s", done: false } console.log(iterator.next()); // { value: "t", done: false } console.log(iterator.next()); // { value: undefined, done: true } Dzięki iteratorom możliwe jest użycie pętli for..of:
for (let ch of text) { console.log(ch); } // "t" // "e" // "k" // "s" // "t"
Generatory jest to szybki sposób tworzenia iteratorów, jest to tzw. cukier syntaktyczny. function* counter(n) { while (n >= 0) { yield n--;