자바스크립트 실무 유틸 함수 시리즈 10 - 함수형 프로그래밍(FP) 스타일

2025. 4. 29. 19:53·Programing/javascript
반응형

이번 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
'Programing/javascript' 카테고리의 다른 글
  • 자바스크립트 실무 유틸 함수 시리즈 12 - 배열 고차 함수(map, filter, reduce)
  • 자바스크립트 실무 유틸 함수 시리즈 11 - 비동기 처리 및 Promise 관련
  • 자바스크립트 실무 유틸 함수 시리즈 9 - Object 객체 고급 조작
  • 자바스크립트 실무 유틸 함수 시리즈 8 - 배열 고급 조작
Dongkkase
Dongkkase
개발자로 일하면서 부딪히는 문제풀이가 누군가에게 도움이 되길 바라며
    반응형
  • Dongkkase
    정집사의 개발로그
    Dongkkase
  • 전체
    오늘
    어제
    • All (456) N
      • 금융 (61)
      • Programing (279) N
        • Algorithm (38) N
        • API (2)
        • javascript (121)
        • CSS (6)
        • HTML (10)
        • PHP (15)
        • JAVA (27)
        • JSP (17)
        • JSP 예제 (1)
        • IOS (1)
        • Android (1)
        • Sencha Touche (1)
        • bat file, cmd (0)
        • 디버깅 (2)
        • SQL (17)
        • MS-SQL (1)
        • MySQL (12)
      • Server (14)
        • Docker (1)
        • Windows (9)
        • Linux (3)
        • jeus (1)
      • Database (5)
      • IT 일반 (15)
      • 리뷰 (1) N
        • Book (17)
        • 제품 (2) N
        • 영화 소개 (11)
        • 음악 소개 (7)
      • 잡생각 (31)
        • 회고 (2)
        • 자료실 (6)
        • 낙서장 (12)
        • 위시리스트 (2)
        • WOW (1)
        • 덕 (1)
  • 인기 글

  • 최근 댓글

  • 태그

    자바스크립트유틸
    블로그
    IT블로그
    jsp
    iT's MY LiFE
    Java
    SQL
    위시리스트
    It
    IT 관련
    JavaScript
    읽고 싶은 책
    자바
    자바스크립트
    js패턴
    php
    IT·컴퓨터
    디자인패턴
    사고 싶은 책
    기초
  • hELLO· Designed By정상우.v4.10.3
Dongkkase
자바스크립트 실무 유틸 함수 시리즈 10 - 함수형 프로그래밍(FP) 스타일
상단으로

티스토리툴바