Javascript: Why use a for loop instead of a for-in loop for arrays?

安稳与你 提交于 2020-01-04 04:14:07

问题


I have been reading Object-Oriented Javascript by Stoyan Stefanov, and at one point he writes:

The for-in loop 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 replaces for or while. Let's see an example of using a for-in to loop through the elements of an array. But bear in mind that this is for informational purposes only, as for-in is mostly suitable for objects, and the regular for loop 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"?


回答1:


The issue is that some libraries (Prototype comes to mind) extend the array type, so when you use a for in loops, it hits all of the enumerable properties 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 in loop iterates only over the elements of the array, that is, anything you'd define literally as [1, 2, 3, 4].




回答2:


The reason to use regular for loops for arrays is that it limits the iteration to indexed values.

If you use a for-in loop, it will iterate through all properties on the object (an array is an object), and may give you unexpected results if you attach arbitrary properties to an array that aren't numerically indexed.




回答3:


Well i mostly use it when i dont know the exact number of elements in an array. in general it is used for iterating on elements when the array is dynamically or on the fly populated.



来源:https://stackoverflow.com/questions/6637240/javascript-why-use-a-for-loop-instead-of-a-for-in-loop-for-arrays

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!