Open In App

Using the function* Declaration in JavaScript

Last Updated : 03 Nov, 2025
Comments
Improve
Suggest changes
2 Likes
Like
Report

The function* declaration is used to define a generator that returns a Generator object. Generators are very powerful for asynchronous programming as they aim to resolve callback problems.

  • yieldpauses the generator function and returns a value while keeping its state.
  • The function resumes from where it stopped after the last yield.
  • next()returns an object with value and done to move to the next state.
Node
    // Declaring a generator function
    function* generator(i) {
      yield i;
      yield i + 50;
      yield i + 100;
    }
    
    // Initialize the generator
    const generate = generator(50);
    
    // Console out the object returned
    // by the next() method
    let nextValObj = generate.next();
    
    // Console out the value of the object
    console.log(nextValObj.value);
    
    // Console out next iterations
    // of the generator
    console.log(generate.next().value);
    console.log(generate.next().value);
    
    // This value would be undefined as
    // the last defined one is i + 100
    console.log(generate.next().value);

Output:

50
100
150
undefined

Syntax:

function* function_name(param1, param2...){  function body}

Example 2: This example shows the declaration of a function * and the use of yield and next().

JavaScript
    function* powerup(n) {
      for (let num = n; ; num *= n) {
    
        // Yield out the current number
        yield num;
      }
    }
    for (let power of powerup(5)) {
    
      // Break if the number is
      // more than 1024
      if (power > 1024)
        break;
    
      console.log("Yielded:", power)
    }

Output:

Yielded: 5
Yielded: 25
Yielded: 125
Yielded: 625

Function Declaration in JavaScript
Visit Course explore course icon

Explore