JavaScript: зачем использовать цикл for вместо цикла for для массивов? - PullRequest
3 голосов
/ 10 июля 2011

Я читал объектно-ориентированный Javascript от Стояна Стефанова, и однажды он пишет:

Цикл for-in используется для перебора элемента массива (или объекта)., как мы увидим позже).Это только польза;его нельзя использовать как универсальный механизм повторения, который заменяет for или while.Давайте рассмотрим пример использования for-in для обхода элементов массива.Но имейте в виду, что это только для информационных целей, поскольку for-in в основном подходит для объектов, и для массивов следует использовать обычный цикл for.

Я всегда использовал for циклы в прошлом при итерации элементов массива, и я обычно видел циклы for, а не циклы for-in, используемые для этой цели, но в чем причина того, что для массивов следует использовать «обычный цикл for»«

Ответы [ 3 ]

3 голосов
/ 10 июля 2011

Причина использования регулярных циклов for для массивов заключается в том, что он ограничивает итерацию индексированными значениями.

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

1 голос
/ 10 июля 2011

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

Цикл for i in выполняет итерации только по элементам массива, то есть всему, что вы определяете буквально как [1, 2, 3, 4].

0 голосов
/ 10 июля 2011

Ну, я в основном использую его, когда не знаю точное количество элементов в массиве. как правило, он используется для итерации элементов, когда массив динамически или на лету заполняется.

...