> For the complete documentation index, see [llms.txt](https://lochiwei.gitbook.io/web/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lochiwei.gitbook.io/web/js/iteration/iterable+ext/range.md).

# range()

[JS](/web/js.md)⟩ [iteration](/web/js/iteration.md) ⟩ [iterable](/web/js/iteration/iterable.md) ⟩ [extension](/web/js/iteration/iterable+ext.md) ⟩ range()&#x20;

{% hint style="success" %}
([iterable](/web/js/iteration/iterable.md)) half-open range of numbers.

```javascript
range(0, 5),        // 0, 1, 2, 3, 4
range(0, 10, 2),    // 0, 2, 4, 6, 8
range(1, 2, 0.3),   // 1, 1.3, 1.6, 1.9000000000000001
range(2, -3),       // (empty iterable)
```

:floppy\_disk: replit ⟩ [range()](https://replit.com/@pegasusroe/range#index.js)&#x20;
{% endhint %}

{% tabs %}
{% tab title="💾 程式" %}

* replit ⟩ [Iterable (protocol)](https://replit.com/@pegasusroe/Iterable-protocol#ext/Iterable.js)&#x20;

```javascript
// ⭐️ half-open range: [start, end)
function range(start, end, step = 1) {
    // return an iterable
    return {
        *[Symbol.iterator]() {
            for (let i = start; start <= i && i < end; i += step) {
                yield i;
            }
        }
    }
}
```

{% endtab %}

{% tab title="👥 相關" %}

* [ClosedRange](/web/js/iteration/iterable/custom/closedrange.md) / [\*closedRange()](/web/js/iteration/generator/examples/closedrange.md) / [Sequence](/web/js/iteration/iterable/custom/sequence.md) / [\*sequence()](/web/js/iteration/generator/examples/seq.md)
  {% endtab %}

{% tab title="📗 參考" %}

* [ ] [JavaScript: The Definitive Guide](/web/master/ref/javascript-the-definitive-guide.md) ⟩ 12.2 Implementing Iterable Objects&#x20;
  {% endtab %}
  {% endtabs %}
