Для итерации элементов массива вы должны использовать эту форму:
var x = [1,2,3,4];
for (var i = 0, len = x.length; i < len; i++) {
// code here to access x[i]
}
Для итерации свойств объекта вы должны использовать это:
var house = {size: 3200, bedrooms: 5, garage: 2, color: "white", city: "San Francisco"};
for (var key in house) {
// access each property here as house[key]
}
Хотя иногда вы можете избежать использования второго синтаксиса в массиве, вы напрашиваетесь на неприятности, потому что он будет включать в себя пользовательские свойства, которые были добавлены в массив, которые не являются самими элементами массива и которые действительно могут запутать код привести к тонким или не очень тонким ошибкам.
Добавление переменной len
в первом синтаксисе является оптимизацией скорости, потому что извлечение длины в локальную переменную может быть значительно быстрее, чем доступ к свойству длины на каждой итерации цикла. Это не обязательно делать так. Это можно сделать так же:
for (var i = 0; i < x.length; i++)