JavaScript Interview Question #128

What is lazy evaluation, and how can generators support it?

Generators, Browser Storage, Security & Advanced Runtime Concepts Senior Advanced

Quick Interview Answer

Lazy evaluation means values are produced only when they are requested rather than computing an entire result set in advance. Generators naturally support this because each yield can produce one value and pause until another value is requested.

Detailed Explanation

Lazy evaluation means values are produced only when they are requested rather than computing an entire result set in advance. Generators naturally support this because each yield can produce one value and pause until another value is requested.

Lazy sequences can reduce memory usage and avoid unnecessary computation when only part of a potentially large or even infinite sequence is consumed.

Code Example

function* evenNumbers() {
    let value = 0;

    while (true) {
        yield value;
        value += 2;
    }
}

const values = evenNumbers();

console.log(values.next().value); // 0
console.log(values.next().value); // 2
console.log(values.next().value); // 4