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 + アイテム) でない限り、速度の違いは無視してください。ミリ秒単位です。

いつでも使用します

  • 移動中のアレイに簡単に警告する方法が必要です
  • たとえば、($i=100; $i < 1000; $i += 5) の場合、100、105、110... という特定のシーケンスが必要です。
于 2013-06-04T18:05:53.483 に答える