Processing each of the items in a collection is a very common operation. JavaScript provides a number of ways of iterating over a collection, from simple for loops to map() and filter(). Iterators and Generators bring the concept of iteration directly into the core language and provide a mechanism for customizing the behavior of for...of loops.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators
* for
* map()
* filter()
* for...of
* Generators
* function
* for..of
* Array
* Map
* Object
* prototype chain
* Symbol.iterator
* String
* Array
* TypedArray
* Map
* Set
* Symbol.iterator
* for-of
* spread syntax
* yield
* destructuring assignment
* next()
* throw()
* return(value)