시스템아 미안해
Chapter 5 - Item 50. 반복문 대신 배열의 반복 메서드를 사용하라 본문
반복 메서드: forEach, map, filter, reduce, some, every 등 배열 전용의 고차 함수.
for 같은 명령형 반복문은 "무엇을 할지"보다 "어떻게 할지"에 집중하게 된다.
이로 인해 코드가 장황해지고, 요소 가공/필터링/집계 로직이 섞여서 가독성이 떨어진다.
const numbers = [1, 2, 3, 4, 5];
let evens = [];
for (let i = 0; i < numbers.length; i++) {
if (numbers[i] % 2 === 0) {
evens.push(numbers[i]);
}
}
책에서는 배열의 반복 메서드를 사용하라고 권장한다.
const evens = numbers.filter(n => n % 2 === 0);
이로써 무엇을 할지 더 집중된 코드로 보여진다.
장점
- 가독성 ↑
- 불변성 유지 (원본 배열 변경 없이 새 배열 생성)
- 콜백 재사용 및 체이닝 가능
const doubledEvens = numbers
.filter(n => n % 2 === 0)
.map(n => n * 2);
ES6 이후 화살표 함수와 결합하여 사용하면 훨씬 간결해질 수 있다.
for...of + yield 조합으로 커스텀 반복 로직도 만들 수 있지만, 내장 배열 메서드가 대부분 더 간단하다.
단, 성능이 절대적으로 중요한 경우에는 명령형 반복문이 미세하게 빠를 수 있으나,
일반적으로는 유지보수성과 가독성이 더 중요하다.
- 조건 필터링, 변환, 집계 등 대부분의 경우 배열 메서드를 쓰는 것이 권장된다.
- 반복문은 인덱스 제어가 필요하거나, 매우 고성능 루프가 필요한 경우에만 제한적으로 사용하자.
'책 > Effective JavaScript' 카테고리의 다른 글
| Chapter 5 - Item 52. 배열 리터럴을 Array 생성자보다 선호하라 (1) | 2025.08.11 |
|---|---|
| Chapter 5 - Item 51. 유사 배열 객체에 배열 메서드를 재사용하라 (0) | 2025.08.11 |
| Chapter 5 - Item 49. 배열 순회에는 for...in 대신 for문을 사용하라 (1) | 2025.08.11 |
| Chapter 5 - Item 48. 객체를 순회(enumeration)하는 동안 수정하지 말라 (2) | 2025.08.11 |
| Chapter 5 - Item 47. Object.prototype에 enumerable 속성을 추가하지 말라 (1) | 2025.08.11 |