# Ошибка перебора массива циклом for-in в JavaScript

Для перебора массива следует использовать цикл `for-of`. Иногда, однако, начинающие ошибочно пытаются применить цикл `for-in`. Давайте посмотрим на характерные признаки этой ошибки.

Пусть у нас есть массив:

`let arr = ['a', 'b', 'c'];`

Давайте переберем элементы этого массива и запишем их в одну строку.

Некий программист уже решил эту задачу, но ошибочно воспользовался циклом `for-in`. Давайте посмотрим, что у него получилось:

`let res = ''; for (let elem in arr) { res += elem; } console.log(res); // выведет '012'`

Итак, в результате получается строка `'012'`, а не `'abc'`. Давайте разбираться, почему так произошло.

Почему вообще массив перебрался через цикл `for-in`? Дело в том, что массив в JavaScript является частным случаем объекта. Поэтому на самом деле в этом плане это корректный код. Но так делать не следует.

Дело в том, что `for-in` при некоторых условиях может зацепить лишнее, и вы кроме элементов массива получите при переборе еще что-нибудь паразитное. Перебирайте массивы только через `for-of`.

Давайте теперь разберемся, почему мы видим такой странный результат. Дело в том, что при переборе через `for-in` в переменную `elem` на самом деле будут попадать ключи, не смотря на сбивающее с толку название этой переменной.

Давайте исправим допущенную ошибку и напишем корректный код:

`let arr = ['a', 'b', 'c']; let res = ''; for (let elem of arr) { res += elem; } console.log(res); // выведет 'abc'`
←→
↑