【JavaScript】for vs forEach
速度の比較
結果は誤差レベルであったり、むしろ、forEachの方がforよりも早い場合が実行する時によっては、あったりなかったりでした。
for文が最速ではなかったのですか?
Node.js 環境においてテストしたそうですが、有意な差はなかったようです。
以前は「forEach
は for
よりかなり遅いので、for
を使いましょう」みたいなこともよく言われていました。
設計上の比較
ECMAScript に限った話ではないのですが、 for
を使うと、良くも悪くも How(どのようにするか=実装)が簡単にだだ漏れになってしまいます。
一方 forEach
を使うと、What (何をするか)を表現しやすく一段抽象度を上げることができ、それが大きな利点となります。
forEach
にインラインで関数を書いていると forEach
のメリットがぼやけてしまいます。そしてそれで十分な場合、「for
vs forEach
」はほぼ意味がないでしょう。
しかし、もし array.forEach(f)
の形にまで落とし込めるなら、array.forEach(f)
を呼び出しているコードは array
の要素について全く知る必要がなくなります。
実際呼び出し側のコードに array
の要素を表す変数が出てこないことからもわかります。
これが抽象度が一段上がった状態です。
ふさわしいなら forEach
をどんどん使っていきましょう。