![]()
JavaScriptにおけるfor文とforEachの違い
JavaScriptで繰り返し処理を行う際によく使用される for 文と forEach メソッドですが、この2つには明確な違いがあります。
for文とは
for 文は、JavaScriptを含む多くのプログラミング言語で使用される一般的なループ構文です。指定された条件が満たされている限り、コードブロックを繰り返し実行します。
for文の構文
for (初期化式; 条件式; 増減式) {
  // 実行する処理
}
    
- 初期化式: ループが開始される前に一度だけ実行されます。ループカウンタの初期化によく使用されます。
 - 条件式: 各ループの開始時に評価されます。条件式が 
trueと評価される場合、ループは継続します。falseと評価されると、ループは終了します。 - 増減式: 各ループの最後に実行されます。ループカウンタの更新によく使用されます。
 
for文の例
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>for文の例</title>
</head>
<body>
  <script>
    const numbers = [1, 2, 3, 4, 5];
    for (let i = 0; i < numbers.length; i++) {
      console.log(numbers[i]);
    }
  </script>
</body>
</html>
    
上記の例では、for 文を使用して配列 numbers の各要素をコンソールに出力しています。
forEachメソッドとは
forEach メソッドは、配列に属するメソッドで、配列の各要素に対して指定した関数を一度ずつ実行します。
forEachメソッドの構文
array.forEach(function(currentValue, index, array) {
  // 実行する処理
});
    
- currentValue: 現在処理されている要素の値。
 - index: 現在処理されている要素のインデックス。
 - array: 
forEachメソッドが呼び出された配列自身。 
forEachメソッドの例
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>forEachメソッドの例</title>
</head>
<body>
  <script>
    const numbers = [1, 2, 3, 4, 5];
    numbers.forEach(function(number) {
      console.log(number);
    });
  </script>
</body>
</html>
    
上記の例では、forEach メソッドを使用して配列 numbers の各要素をコンソールに出力しています。
for文とforEachメソッドの違い
| 特徴 | for文 | forEachメソッド | 
|---|---|---|
| 構文 | より複雑 | よりシンプル | 
| 制御 | ループの制御が可能 (break, continue) | ループの制御は不可 | 
| インデックス | 明示的に扱う必要がある | 自動的に渡される | 
| 柔軟性 | 配列以外のオブジェクトにも使用可能 | 配列専用 | 
| パフォーマンス | 一般的に高速 | 一般的に低速 | 
補足:
- forEachメソッドは、配列の要素を全て処理することが前提となります。途中でループを中断したい場合は、
for文を使用する必要があります。 - パフォーマンスについては、処理内容や環境によって異なる場合があるため、参考程度に考えてください。
 
まとめ
for 文と forEach メソッドはどちらも繰り返し処理を実現する手段ですが、それぞれ特徴が異なります。状況に応じて使い分けることが重要です。
参考文献
よくある質問
Q1: for文とforEachメソッド、どちらを使うべきですか?
A1: 配列の要素を全て順番に処理したい場合は、forEach メソッドがシンプルでおすすめです。ループの制御が必要な場合や、配列以外のオブジェクトを処理する場合は、for 文を使用します。
Q2: forEachメソッド内でbreak文は使用できますか?
A2: いいえ、使用できません。forEach メソッドは配列の要素を全て処理することが前提となっているため、break 文でループを中断することはできません。
Q3: forEachメソッドのコールバック関数でreturn文を使用するとどうなりますか?
A3: forEach メソッドのコールバック関数内の return 文は、通常の関数と同様に動作します。ただし、forEach メソッド自体は処理を継続するため、ループ全体を中断することはありません。
その他の参考記事:JavaScript for ループ