【发布时间】:2011-03-03 18:17:11
【问题描述】:
一种方法更有效吗?一种方法与另一种方法相比是否有任何限制?感谢你们可以给我的任何意见;-)
【问题讨论】:
标签: javascript
一种方法更有效吗?一种方法与另一种方法相比是否有任何限制?感谢你们可以给我的任何意见;-)
【问题讨论】:
标签: javascript
Array.prototype.forEach 方法是 ECMAScript 第 5 版规范的一部分,在 all browsers 上可用,但在 IE 中不可用。
我建议您使用简单的顺序for 循环,IMO 效率更高,因为forEach 需要回调函数,将创建一个函数以启动闭包,您无需关心 IE。
但如果您想使用forEach 和所有其他新的Array.prototype 方法,例如map、filter、every、some 等...您可以为 IE 添加一个实现,在我链接的页面中。
【讨论】:
forEach在火狐上快如闪电,我做了一个简单的performance test,欢迎play with it。
类似于 for each 但在所有浏览器中都支持
for (var i = 0, myArrayElement; myArrayElement = myArray[i]; i++) {
//now you can just use
// myArrayElement
// instead of
// myArray[i]
}
请注意,我在遍历表单集合(即 document.forms[0].elements)时使用它
【讨论】:
0, null, undefined, NaN, an空字符串,当然还有false)。试试var myArray = [0, 1, 2];
for (var x,i=0; x=data[i++];) {...} 是这样做的另一种方式,但它仍然存在“虚假”问题。另请参阅stackoverflow.com/questions/2971698/…,有关如何在不要求评估为 true 的项目的情况下执行此操作的示例,请参阅 #7,尽管它非常混乱 :-)