반응형
이번 10편에서는 자바스크립트에서 함수형 프로그래밍(FP) 스타일로 활용할 수 있는 유틸 함수들을 정리합니다. 불변성(immutability), 고계함수(higher-order functions), 순수함수(pure functions) 같은 개념을 실무에 쉽게 적용할 수 있는 함수들입니다.
✅ 1. compose (함수 합성)
📌 여러 함수를 오른쪽에서 왼쪽으로 결합
function compose(...fns) {
return (arg) => fns.reduceRight((acc, fn) => fn(acc), arg);
}
📌 활용 예시
- 데이터 변환 파이프라인 구성
- 복잡한 변환 과정을 단계별로 처리
✅ 2. pipe (함수 파이프라인)
📌 여러 함수를 왼쪽에서 오른쪽으로 결합
function pipe(...fns) {
return (arg) => fns.reduce((acc, fn) => fn(acc), arg);
}
📌 활용 예시
- 읽기 좋은 데이터 변환 흐름 만들기
- 가독성 높은 로직 작성
✅ 3. curry (커링)
📌 여러 인자를 하나씩 받는 함수로 변환
function curry(fn) {
return function curried(...args) {
if (args.length >= fn.length) {
return fn(...args);
} else {
return (...nextArgs) => curried(...args, ...nextArgs);
}
};
}
📌 활용 예시
- 재사용 가능한 함수 생성
- 설정 값 부분 적용(partial application)
✅ 4. once (한 번만 실행되는 함수)
📌 단 한 번만 실행하고 이후 호출은 무시
function once(fn) {
let called = false;
let result;
return function (...args) {
if (!called) {
called = true;
result = fn.apply(this, args);
}
return result;
};
}
📌 활용 예시
- 초기화 작업 한 번만 실행
- API 요청 중복 방지
✅ 5. memoize (메모이제이션)
📌 계산 결과를 캐싱하여 성능 최적화
function memoize(fn) {
const cache = new Map();
return function (...args) {
const key = JSON.stringify(args);
if (cache.has(key)) {
return cache.get(key);
}
const result = fn(...args);
cache.set(key, result);
return result;
};
}
📌 활용 예시
- 무거운 계산 함수 최적화
- 검색어 자동완성 성능 향상
✅ 결론
함수형 프로그래밍 스타일은 복잡한 로직을 단순하고 명확하게 만들 수 있습니다. 이번 시리즈에서 다룬 유틸 함수들을 활용하면 유지보수성이 높고 오류가 적은 코드를 작성할 수 있습니다.
반응형
'Programing > javascript' 카테고리의 다른 글
자바스크립트 실무 유틸 함수 시리즈 14 - 반응형 UI 구현을 위한 유틸 (0) | 2025.05.01 |
---|---|
자바스크립트 실무 유틸 함수 시리즈 13 - 프론트엔드 성능 측정을 위한 간단한 유틸 (0) | 2025.05.01 |
자바스크립트 실무 유틸 함수 시리즈 12 - 배열 고차 함수(map, filter, reduce) (0) | 2025.05.01 |
자바스크립트 실무 유틸 함수 시리즈 11 - 비동기 처리 및 Promise 관련 (0) | 2025.04.29 |
자바스크립트 실무 유틸 함수 시리즈 9 - Object 객체 고급 조작 (0) | 2025.04.29 |
자바스크립트 실무 유틸 함수 시리즈 8 - 배열 고급 조작 (0) | 2025.04.29 |
자바스크립트 실무 유틸 함수 시리즈 7 - 문자열 정규 표현식 (0) | 2025.04.29 |
자바스크립트 실무 유틸 함수 시리즈 6 - 시간과 날짜 (0) | 2025.04.29 |