JavaScript Hard technical 1 views 1 min read

What are generator functions and how do they work?

Peer-reviewed by HireXTech Technical Panel Updated for 2025/2026 hiring Editorial standards
Practise this track
Interviewer Expectations for this Question
01
Core Competency

Assesses fundamental understanding of JavaScript conventions, runtime behavior, and memory/performance considerations.

02
Evaluation Criteria

Hiring managers look for precision, avoidance of ambiguous jargon, and ability to explain trade-offs under real production conditions.

Comprehensive Model Answer Verified Solution

Generator functions are special functions that can pause execution and resume later, allowing them to produce a sequence of values over time instead of computing them all at once.

     function* numberGenerator() {
       yield 1;
       yield 2;
       yield 3;
     }

     const gen = numberGenerator();
     console.log(gen.next()); // { value: 1, done: false }
     console.log(gen.next()); // { value: 2, done: false }
     console.log(gen.next()); // { value: 3, done: false }
     console.log(gen.next()); // { value: undefined, done: true }
     

Key features:

  1. Lazy evaluation:
        function* infiniteSequence() {
          let i = 0;
          while (true) {
            yield i++;
          }
        }
        
  1. Two-way communication:
        function* twoWay() {
          const x = yield 'First';
          yield `Got: ${x}`;
        }

        const gen = twoWay();
        console.log(gen.next());      // { value: 'First', done: false }
        console.log(gen.next('data')); // { value: 'Got: data', done: false }
        
  1. Delegating to other generators:
        function* gen1() { yield 1; yield 2; }
        function* gen2() {
          yield* gen1();
          yield 3;
        }
        

Practical uses: iterating large datasets, implementing custom iterators, managing async flows (though async/await is now preferred).

Candidate Response Strategy & Interview Tips

  1. Start with a concise one-sentence summary: Deliver a direct, confident answer first before expanding into nuances.
  2. Demonstrate real-world trade-offs: Discuss where this approach excels and when you would avoid it in production systems.
  3. Discuss complexity & edge cases: Proactively explain time/space complexity or boundary conditions (null values, scale limits).
  4. Prepare for interviewer follow-ups: Technical hiring panels frequently probe deeper into concurrency, backward compatibility, or alternative libraries.
Related Topics & Skills
Spotted an error or have an alternative solution?