let array = [1,2,3]; // Array is iterable// ⭐️ make an iteratorlet iterator = array[Symbol.iterator]();// first iteration resultlet head =iterator.next(); // { value: 1, done: false }// ----------------------------// ⭐️ iterable iterator// ----------------------------// the iterator of a built-in iterable object is itself "iterable", i.e. it can:// ⭐️ 1. spread itself into array elements or function arguments.// ⭐️ 2. make an iterator for itself. (in fact, the iterator === itself)// ⭐️ 1. spread itself into array elementslet tail = [...iterator]; // [ 2, 3 ] ⭐️ // ⭐️ 2. make an iterator for itselflet it = iterator[Symbol.iterator]();// ⭐️ 2. the iterator of the `iterator` is the `iterator` itself.it === iterator; // true❗