我已经看到很多建议使用的问题:
for (var i = 0; i < myArray.length; i++){ /* ... */ }
代替:
for (var i in myArray){ /* ... */ }
对于数组,由于迭代不一致(请参见此处)。
但是,我似乎找不到任何似乎更喜欢面向对象循环的东西:
myArray.forEach(function(item, index){ /* ... */ });
对我来说,这似乎更直观。
对于我当前的项目,IE8兼容性很重要,我正在考虑使用Mozilla的polyfill,但是我不确定100%如何工作。
- 现代浏览器的for循环标准(上面的第一个示例)与Array.prototype.forEach实现之间是否有区别?
- 现代浏览器实现与上面链接到的Mozilla的实现之间有什么区别(特别注意IE8)?
- 性能并不是问题,只是迭代属性的一致性。
break
退出forEach
。但是最大的好处是可以使用该功能创建一个新的作用域。使用polyfill,您应该不会有任何问题(至少我没有遇到任何问题)。