시스템아 미안해

Chapter 5 - Item 50. 반복문 대신 배열의 반복 메서드를 사용하라 본문

책/Effective JavaScript

Chapter 5 - Item 50. 반복문 대신 배열의 반복 메서드를 사용하라

if else 2025. 8. 11. 09:24

반복 메서드: 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);

이로써 무엇을 할지 더 집중된 코드로 보여진다.

 

 

장점

  1. 가독성 ↑
  2. 불변성 유지 (원본 배열 변경 없이 새 배열 생성)
  3. 콜백 재사용 및 체이닝 가능
const doubledEvens = numbers
  .filter(n => n % 2 === 0)
  .map(n => n * 2);

 

 

 


 

 

 

ES6 이후 화살표 함수와 결합하여 사용하면 훨씬 간결해질 수 있다.

for...of + yield 조합으로 커스텀 반복 로직도 만들 수 있지만, 내장 배열 메서드가 대부분 더 간단하다.

단, 성능이 절대적으로 중요한 경우에는 명령형 반복문이 미세하게 빠를 수 있으나,

일반적으로는 유지보수성과 가독성이 더 중요하다.

 

 

  • 조건 필터링, 변환, 집계 등 대부분의 경우 배열 메서드를 쓰는 것이 권장된다.
  • 반복문은 인덱스 제어가 필요하거나, 매우 고성능 루프가 필요한 경우에만 제한적으로 사용하자.