JavaScript | 基礎構文:ループ – ループ vs 高階関数(比較だけ)

JavaScript JavaScript
スポンサーリンク

ループと高階関数の違いとは

プログラミングでは「繰り返し処理」を書く方法として ループ構文(for, while など)高階関数(map, filter, forEach など) の2つがあります。どちらも「配列の要素を順番に処理する」ことができますが、書き方や考え方に違いがあります。


ループ構文の特徴

書き方の自由度が高い

forwhile を使うと、繰り返しの開始条件・終了条件・更新方法を自由に書けます。

const numbers = [1, 2, 3, 4, 5];
let sum = 0;

for (let i = 0; i < numbers.length; i++) {
  sum += numbers[i];
}
console.log(sum); // 15
JavaScript

この例では、インデックスを使って配列の要素を順番に足し合わせています。

可読性が下がることもある

自由度が高い分、処理が複雑になると「何をしているのか」が分かりにくくなることがあります。


高階関数の特徴

意図が分かりやすい

高階関数は「配列をどう処理するか」を直接表現できます。

const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((acc, n) => acc + n, 0);
console.log(sum); // 15
JavaScript

この例では「reduce を使って合計を計算する」と意図が明確です。

コードが短くなる

ループよりもシンプルに書ける場合が多く、読みやすさが向上します。


ループと高階関数の比較

例題1:配列の要素を2倍にする

ループの場合

const numbers = [1, 2, 3];
const doubled = [];

for (let i = 0; i < numbers.length; i++) {
  doubled.push(numbers[i] * 2);
}
console.log(doubled); // [2, 4, 6]
JavaScript

高階関数の場合

const numbers = [1, 2, 3];
const doubled = numbers.map(n => n * 2);
console.log(doubled); // [2, 4, 6]
JavaScript

ループは「どう繰り返すか」を細かく書く必要がありますが、高階関数は「何をしたいか」を直接書けます。


例題2:偶数だけを取り出す

ループの場合

const numbers = [1, 2, 3, 4, 5];
const evens = [];

for (let i = 0; i < numbers.length; i++) {
  if (numbers[i] % 2 === 0) {
    evens.push(numbers[i]);
  }
}
console.log(evens); // [2, 4]
JavaScript

高階関数の場合

const numbers = [1, 2, 3, 4, 5];
const evens = numbers.filter(n => n % 2 === 0);
console.log(evens); // [2, 4]
JavaScript

高階関数は「条件に合うものを残す」と直感的に書けます。


まとめ

  • ループ は自由度が高く、細かい制御ができるが、コードが長くなりがち。
  • 高階関数 は意図が分かりやすく、短く書けるが、複雑な制御には不向きな場合もある。
  • 初心者は「ループで仕組みを理解し、高階関数でコードを簡潔に書く」という流れで学ぶと理解しやすい。

つまり、ループは「手作業で繰り返す」、高階関数は「処理を任せる」とイメージすると違いがつかみやすいです。

タイトルとURLをコピーしました