11.1Iterators and Generators / Higher-Order Functions

高階関数を使用する

`for-in`や`for-of`のようなループの代わりに、JavaScriptの高階関数 (`map`, `filter`, `reduce`など) を使用します。これにより、イミュータブルなルールが強制され、副作用のない純粋な関数を扱いやすくなります。

`for`ループは、ループ内で外部の変数を変更する(副作用)ことが多く、手続き的なコードになりがちです。`map`や`reduce`のような高階関数は、「配列を別の形の配列に変換する」「配列を一つの値に集約する」といった、より宣言的な意図を表現します。これにより、副作用が少なく、テストしやすく、再利用性の高いコードを書くことができます。

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

// bad
let sum = 0;
for (let num of numbers) {
  sum += num;
}
✅ Good
const numbers = [1, 2, 3, 4, 5];

// best (use the functional force)
const sum = numbers.reduce((total, num) => total + num, 0);