Перебор массива JavaScript

В JavaScript, как и почти в любом языке программирования, имеются массивы. И любой программист, даже начинающий, знает, как можно перебрать массив в цикле. Например:

var M = [1, 2, 3, 4];
for (i = 0; i < 4; i++) document.write(M[i] + ' ');

Здесь нет ничего сложного, цикл for имеется почти во всех языках и используется с массивами одинаково (ну за исключением небольших отличий в синтаксисе).

Однако в JavaScript, кроме “традиционных” циклов, для перебора массива можно применять и цикл for/in. Поскольку в этом языке массивы - это просто особые виды объектов. Так что цикл for/in может использоваться для перебора элементов массива также, как свойств объекта:

В JavaScript, как и почти в любом языке программирования, имеются массивы. И любой программист, даже начинающий, знает, как можно перебрать массив в цикле.

Цикл for/in не задает порядка, в котором свойства объекта присваиваются переменной. Нельзя заранее узнать, каким будет этот порядок, и в различных реализациях и версиях JavaScript поведение может быть разным. Если тело цикла for/in удалит свойство, которое еще не было перечислено, это свойство перечислено не будет. Если тело цикла определяет новые свойства, то будут или нет перечислены эти свойства, зависит от реализации.

Цикл for/in на самом деле не перебирает все свойства всех объектов. Так же как некоторые свойства объектов помечаются как доступные только для чтения или постоянные (не удаляемые), свойства могут помечаться как неперечисляемые. Такие свойства не перечисляются циклом for/in. Если все свойства, определенные пользователем, перечисляются, то многие встроенные свойства, включая все встроенные методы, не перечисляются.

Так что без особой надобности нет смысла использовать цикл for/in для перебора массива. Разве что вам очень захочется показать свои познания в программировании )))

Да, исходный код получится на пару символов короче. Но если имеется хоть малейшая вероятность неоднозначного поведения программы, то лучше применять старые “дедовские” способы, которые быть может, выглядят и не так современно, но зато работают совершенно предсказуемо.

Дополнительно про оператор in можете почитать здесь.

На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.