> For the complete documentation index, see [llms.txt](https://strctr.gitbook.io/programming/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://strctr.gitbook.io/programming/01-languages/javascript/01-language/e-controls/e1-iteration/05-infinite-iterator.md).

# 05. Infinite Iterator

Итератор может быть бесконечным, для этого просто нужно не возвращать `done: true`.

```javascript
function randomNumber() {
  let n = 0;
  return {
    [Symbol.iterator]() {
      return this;
    },
    next() {
      return { value: Math.random() };
    }
  };
}
```

Работа с бесконечным итератором:

* Бесконечный итератор можно прервать в цикле `for-of` при помощи `break`
* Взять из бесконечного итератора только определенное количество элементов

```javascript
for (const x of randomNumber()) {
  if (x > 0.5) break;
  console.log(x);
}

const [one, two, three] = randomNumber();
```
