Generators in JavaScript

There are special functions with which you can create your own iterators. Such functions are called generators. The names of such functions must begin with an asterisk:

function *func() { }

Inside generators, the yield keyword is used to indicate what the iterator should return on the next call. For example, let's make the first call return 1, the second return 2, and the third return 3:

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

The generator returns an iterator as its result:

let iter = func();

Let's test our iterator:

console.log(; // {value: 1, done: false} console.log(; // {value: 2, done: false} console.log(; // {value: 3, done: false} console.log(; // {value: undefined, done: true}

Create an iterator, each call of which will return numbers from 5 to 1.