Day 49

Lazy Evaluation

10 min
JavaScript 100 Days

Lazy evaluation mein values tab compute hoti hain jab actually need ho — pehle nahi. Memory save hoti hai aur performance improve hoti hai, specially large datasets ke saath.

Lazy Sequences with Generators

Infinite sequences lazily generate karo.

lazy.js
javascript
// Lazy sequence — sirf jab needed ho
function* lazyRange(start, end, step = 1) {
  for (let i = start; i <= end; i += step) {
    yield i; // ek ek karke, as needed
  }
}

// Sirf pehle 5 numbers chahiye — baki compute hi nahi hue!
const first5 = [];
for (let n of lazyRange(1, 1000000)) {
  first5.push(n);
  if (first5.length === 5) break;
}
console.log(first5); // [1, 2, 3, 4, 5]

// Lazy map/filter
function* lazyMap(iterable, fn) {
  for (let item of iterable) yield fn(item);
}

function* lazyFilter(iterable, pred) {
  for (let item of iterable) {
    if (pred(item)) yield item;
  }
}

// Chaining
const evenSquares = lazyFilter(
  lazyMap(lazyRange(1, 100), x => x * x),
  x => x % 2 === 0
);

console.log([...evenSquares].slice(0, 5)); // first 5 even squares

🎯 Practice Challenge

Lazy image loader banao — sirf jab image viewport mein aaye to load karo (Intersection Observer + lazy evaluation).