由于forEach没有直接可用的break,所以循环还是只好靠for。
我一直觉得简单的更好,所以更倾向for..in来遍历数组,但是webstorm中会warning。
如果不应该用for..in来遍历,请告诉我为什么。
代码举例:
var array = [1,2,3,4,5];
for ( var i = 0; i < array.length; i++ ) {
var item = array[i];
console.log(item);
}
// 或者
for ( var i in array ) {
var item = array[i];
console.log(item);
}
一个最简单常见的,为何不要用for in循环遍历数组的例子,是使用了诸如modernizr的库,做了IE6~8的ECMAScript5的Array对应方法的原型扩展的shim的情形。
比如,
Array.prototype.forEach = function(){}
for in循环遍历,遍历的是可枚举的自身属性和继承属性,这意味着你的原型链上的扩展方法都会被遍历到,而在上述情形下,肯定会出现你不想要的结果。
示例:
以下是调用结果:
阅读更多: