JS Iterators Generators Symbol
Ringkasan
Iterator memungkinkan traversal terstruktur. Generator (function*) membuat iterator dengan mudah lewat yield.
Konsep Dasar
- Iterable: punya
Symbol.iterator(array, string, Map, Set). - Iterator: objek dengan
next()→{value, done}. for...ofbekerja di iterable.- Generator:
function*+yield, bisa pause/resume, lazy.
Cara Kerja / Struktur
function* range(n){
for(let i=0;i<n;i++) yield i;
}
for(const x of range(3)) console.log(x); // 0 1 2
const it = [1,2,3][Symbol.iterator]();
it.next(); // {value:1, done:false}Catatan Implementasi
- Generator cocok untuk sequence besar/infinite (lazy eval).
yield*untuk delegate ke generator lain.
Kesalahan Umum
for...in(enumerate key) vsfor...of(iterate value) — sering tertukar.- Lupa
*difunction*→ bukan generator.
Glosarium
- Iterable protocol: kontrak agar objek bisa di-loop.
- Lazy: dihitung saat dibutuhkan, bukan di awal.