I have been reading Object-Oriented Javascript by Stoyan Stefanov, and at one point he writes:
The
for-inloop is used to iterate over the element of an array (or an object, as we’ll see later). This is it’s only use; it can not be used as a general-purpose repetition mechanism that replacesfororwhile. Let’s see an example of using afor-into loop through the elements of an array. But bear in mind that this is for informational purposes only, asfor-inis mostly suitable for objects, and the regularforloop should be used for arrrays.
I have always used for loops in the past when iterating of the elements of an array and I have usually seen for loops not for-in loops used for this purpose, but what is the reason that the “regular for loop should be used for arrays”?
The issue is that some libraries (Prototype comes to mind) extend the array type, so when you use a
for inloops, it hits all of theenumerableproperties on that array, which includes all elements of the array, but also all added on properties or methods. Not what you want to have happen.The
for i inloop iterates only over the elements of the array, that is, anything you’d define literally as[1, 2, 3, 4].