We started off the chapter with symbols. Symbols, due to their unicity, solve the problem of defining standard places inside objects/prototypes, thereby eliminating the risk of collisions with other properties defined in other software modules. For this reason, they are the foundation of JavaScript metadata programming.
We then moved on to iterables. The concept of iterable is a powerful abstraction that allows quite different data structures to be processed by the same functions and instructions, such as the for..of loop. Moreover, they delay the computation of each item of an enumeration until the time it is actually needed, thereby saving time when the enumeration happens to be incomplete. Generator functions are a powerful tool designed to simplify the definition of iterables, since they overcome the communication problem generated by the demand to decouple the code...