Во-первых, порядок цикла не определен для цикла for...in
, поэтому нет гарантии, что свойства будут повторяться в нужном вам порядке.
Во-вторых, for...in
перебирает все перечисляемые свойства объекта, включая те, которые унаследованы от его прототипа. В случае массивов это может повлиять на вас, если ваш код или любая библиотека, включенная в вашу страницу, дополнили прототип Array
, что может быть действительно полезным:
Array.prototype.remove = function(val) {
// Irrelevant implementation details
};
var a = ["a", "b", "c"];
for (var i in a) {
console.log(i);
}
// Logs 0, 1, 2, "remove" (though not necessarily in that order)