forEach가 생겨난 이유
함수형 프로그래밍은 순수 함수와 보조 함수의 조합을 통해 로직 내에 존재하는 조건문과 반복문을 제거하여 복잡성을 해결하고 변수의 사용을 억제하여 상태 변경을 피하려는 프로그래밍 패러다임이다.
조건문이나 반복문은 로직의 흐름을 이해하기 어렵게 한다. 특히 for 문은 반복을 위한 변수를 선언해야 하며, 조건식과 증감식으로 이루어져 있어서 함수형 프로그래밍이 추구하는 바와 맞지 않는다.
const numbers = [1, 2, 3];
const pows = [];
// for 문으로 배열 순회
for (let i = 0; i < numbers.lenght; i++) {
pows.push(numbers[i] ** 2);
}
console.log(pows); [1, 4, 9]
forEach 메서드는 for문을 대체할 수 있는 고차 함수다. forEach 메서드는 자신의 내부에서 반복문을 실행한다. 즉, forEach 메서드는 반복문을 추상화한 고차 함수로서 내부에서 반복문을 통해 자신을 호출한 배열을 순회하면서 수행해야 할 처리를 콜백 함수로 전달받아 반복 호출한다. for문으로 구현된 위 예제를 forEach 메서드로 구현하면 다음과 같다.
const numbers = [1, 2, 3];
const pows = [];
// forEach 메서드는 numbers 배열의 모든 요소를 순회하면서 콜백 함수를 반복 호출한다.
numbers.forEach(item => pows.push(item ** 2));
console.log(pows);
위 예제의 경우 forEach 메서드는 numbers 배열의 모든 요소를 순회하여 콜백 함수를 반복 호출한다. numbers 배열의 요소가 3개이므로 콜백 함수도 3번 호출된다. 이때 콜백 함수를 호출하는 forEach 메서드는 콜백 함수에 인수를 전달할 수 있다.
'Javascript' 카테고리의 다른 글
| [JavaScript] sort() 메서드 (0) | 2025.10.02 |
|---|---|
| flat()과 flatMap()으로 중첩 배열 정복! (0) | 2025.10.01 |
| [모던 자바스크립트 Deep Dive] Set (0) | 2025.09.12 |
| Object.entries(): 객체를 배열처럼 다루는 가장 효과적인 방법 (0) | 2025.08.22 |
| ??= (Nullish Coalescing Assignment) 널 병합 할당 연산자, 이제 더 간편하게! (2) | 2025.08.17 |