Разница между циклами for…of и for…in при работе с массивами в JavaScript заключается в том, что for…in проходит по всем перечисляемым свойствам объекта (включая свойства, унаследованные от прототипа), а for…of проходит только по значениям элементов объекта, которые доступны через итератор. 1
В случае с массивами итератором является индекс каждого элемента массива. 1 Следовательно, for…of проходит через все числовые индексы массива и возвращает соответствующие значения. 1 Он не проходит через какие-либо другие свойства, включая те, которые были добавлены вручную. 1
Таким образом, цикл for…of удобен для перебора элементов массива, так как он предоставляет доступ к значению каждого элемента. 4 Цикл for…in может использоваться для итерации по индексам массива, но это не рекомендуется, так как он итерирует по всем перечисляемым свойствам, включая свойства из прототипа. 4
Выбор между этими циклами зависит от конкретной ситуации и требуемого результата. 1