Y121516 の大館お役立ち日記

秋田県大館市での生活

【JavaScript】for vs forEach

速度の比較

結果は誤差レベルであったり、むしろ、forEachの方がforよりも早い場合が実行する時によっては、あったりなかったりでした。

for文が最速ではなかったのですか?

Node.js 環境においてテストしたそうですが、有意な差はなかったようです。

以前は「forEachfor よりかなり遅いので、for を使いましょう」みたいなこともよく言われていました。

設計上の比較

ECMAScript に限った話ではないのですが、 for を使うと、良くも悪くも How(どのようにするか=実装)が簡単にだだ漏れになってしまいます。 一方 forEach を使うと、What (何をするか)を表現しやすく一段抽象度を上げることができ、それが大きな利点となります。

forEach にインラインで関数を書いていると forEach のメリットがぼやけてしまいます。そしてそれで十分な場合、「for vs forEach」はほぼ意味がないでしょう。 しかし、もし array.forEach(f) の形にまで落とし込めるなら、array.forEach(f) を呼び出しているコードは array の要素について全く知る必要がなくなります。 実際呼び出し側のコードに array の要素を表す変数が出てこないことからもわかります。 これが抽象度が一段上がった状態です。

ふさわしいなら forEach をどんどん使っていきましょう。