2

我可以,

var arr = [];

arr.forEach(function(i) {

     i;
});

for (var i = 0, length = arr.length; i < length; ++i) {

     arr[i];
}

我什么时候应该使用另一种,是否存在性能差异?

4

1 回答 1

9

你在任何时候使用 foreach :

  • 您的数组是关联的或有间隙,即您无法通过递增的数字(1,2,5,'x',-7)到达每个元素
  • 您需要以与它们在数组中出现的顺序完全相同的顺序进行迭代。(例如 2,1,3)
  • 您要确保不会陷入无限循环

最后一点是主要区别:foreach 在副本上工作,因此即使您更改元素,数组仍保持完整并且可以无缺陷地迭代。

该副本使 foreach 比 for 慢一些,因为它必须复制数据。请记住,一些旧的或稀有的浏览器不支持 foreach,但它们确实支持“for”。除非您的数组非常大(10.000 + 项),否则请忽略速度差异。它以毫秒为单位。

您随时使用

  • 您想要一种简单的方法来提醒您正在移动的阵列
  • 你想要特定的序列,例如 for ($i=100; $i < 1000; $i += 5) 导致 100, 105, 110...
于 2013-06-04T18:05:53.483 回答