JavaScript Generators & Iterators Kya Hote Hain?

Data sequences ko on-demand generate karna aur memory ko efficiently manage karna sikhein.

1. JavaScript Iterator Kya Hota Hai?

JavaScript me iterator ek aisa object hota hai jo kisi collection (jaise array, set, ya string) ke elements ko ek-ek karke access karne ka method provide karta hai. Iterator ka main purpose sequential access dena hota hai bina collection ke structure ko expose kiye.

Jab hum kisi iterator ka .next() method call karte hain, to yeh ek object return karta hai jisme do properties hoti hain:

  • value: Collection ka current element.
  • done: Ek boolean jo batata hai ki iteration complete hua ya nahi.
let numbers = [10, 20, 30];
let iterator = numbers[Symbol.iterator]();

console.log(iterator.next()); // { value: 10, done: false }
console.log(iterator.next()); // { value: 20, done: false }
console.log(iterator.next()); // { value: 30, done: false }
console.log(iterator.next()); // { value: undefined, done: true }

2. JavaScript Generator Kya Hota Hai?

JavaScript Generators ek special type ka function hota hai jo execution ko pause aur resume karne ki ability deta hai. Yeh functions function* keyword se declare kiye jaate hain aur yield keyword ka use karke values ko ek-ek karke return karte hain.

Jab bhi generator function call hota hai, vo ek iterator object return karta hai. Har .next() call par generator function yield tak execute hota hai aur fir wahan ruk jaata hai, jab tak next call nahi hoti.

Example:

function* fruitGenerator() {
  yield 'Apple';
  yield 'Banana';
  yield 'Grapes';
}

const fruits = fruitGenerator();

console.log(fruits.next()); // { value: 'Apple', done: false }
console.log(fruits.next()); // { value: 'Banana', done: false }
console.log(fruits.next()); // { value: 'Grapes', done: false }
console.log(fruits.next()); // { value: undefined, done: true }

Iterator vs. Generator

FeatureIteratorGenerator
CreationManually create karna padta haiEasily ban jaata hai function* se
SyntaxNormal object with next()function* aur yield use hota hai
SimplicityCode lamba aur complex ho sakta haiCode short aur readable hota hai
Pause & ResumeNahi kar sakteYes, yield se pause ho sakta hai

Generators ke Use Cases

  • Lazy Evaluation: Tab use karein jab aapko saari values ek saath nahi chahiye, jisse memory bachti hai.
  • Infinite Sequences: Infinite numbers ya data streams generate karne ke liye.
  • Asynchronous Code: Asynchronous operations ko handle karne ka ek advanced tareeka (jaise `async/await` internally generators use karta hai).
Bonus: Practical Application!
Ab in concepts ko practically use karke dekhein.

Ek generator function banayein jo 1 se 5 tak ke numbers yield kare. Fir, `for...of` loop ka use karke un numbers ko console me print karein.

Practice in JS Editor
Test Your Knowledge!
Kya aap JavaScript Generators aur Iterators ke baare mein seekh chuke hain? Chaliye dekhte hain!

Apni knowledge test karne ke liye is quick quiz ko dein.

Start Quiz