JavaScript iteration protocols reference
Iterable protocol
The iterable protocols allows JavaScript objects to define or customise their iteration behaviour (i.e., what values are looped over in a for..of
construct.)
Some built-in types (e.g., Array
or Map
) are built-in iterables, while other types (e.g., Object
) are not.
In order to be iterable, an object must implement the @@iterator
method, meaning that the object or one of the objects in its prototype chain must have a @@iterator
key that’s available via the constant Symbol.iterator
.
Whenever an object needs to be iterated, its @@iterator
method is called with no arguments, and the returned iterator is used to obtain the values to be iterated.
Iterator protocol
The iterator protocol defines a standard way to produce a sequence of values (finite or infinite), and potentially a return value when all values have been generated.
We say an object is an iterator when it implements a next()
method: which is a zero arg function that returns an object with atleast the following two properties:
done
(boolean): Set totrue
if the iterator is past the end of the iterated sequence. In this case,value
optionally specifies the return value of the iterator.value
(any): Any JavaScript value returned by the iterator. Can be omitted whendone
istrue
.
If next()
returns a non-object value, a TypeError
will be thrown with the message iterator.next() returnd a non-object value
.
Sources/links
Thanks for your comment 🙏. Once it's approved, it will appear here.
Leave a comment