Symbol.iterator делает любые ваши объекты «родными» для for...of, спреда ([...]), Array.from, деструктурирования и т. п. Ниже будут приведены реальные примеры для реальных задач. Часто нужно получить список рабочих дат для планирования задач/напоминаний, генерации слотов и т. п. Полезно для вычисления контекста: ближайший positioned родитель, контейнер с data-*, ближайшая форма и т. п. Когда нужно отдать данные порциями (например, рендерить таблицу страницами или обрабатывать пачками в воркере). Делаем итерируемую последовательность шагов анимации (1 → 1.2 → 0.9 → 1). Каждый шаг — цель, длительность и easing. Повторный запуск — без побочных эффектов, потому что [Symbol.iterator] каждый раз создаёт новый итератор.