JS

함수 형태로 감싼다고 함수형 프로그래밍이 아니다

2025. 4. 7. 19:05

제목이 내 얘기였던 건 안 비밀

const signupHandler = (e) => {
  e.preventDefault();
};

const connectForm = () => {
  const form = document.getElementById("user-input");
  form.addEventListener("submit", signupHandler);
};

 

이 코드를 함수형 프로그래밍을 했다고 할 수 있을까?

정답은 '형태는 맞지만, 용도는 틀렸다'고 할 수 있다.

 

함수형 프로그래밍의 핵심은 4가지다.

  • '순수' 함수일 것 (하나의 기능만 하거나, 한가지 데이터만 리턴)
  • 모든 데이터를 '매개변수'로 받을 것
  • 최대한 '예측'이 가능할 것
  • '재사용'이 가능할 것

위 코드는 'user-input', 'signupHandler'와 같이 데이터를 매개변수로 받지 않고 하드코딩했다.

이렇게 되면 재사용하기 어려워지고, 어떤 데이터를 받을지 실행하기 전엔 모르기 때문에 예측도 어려워진다.

 

그래서 (진정한) 함수형 프로그래밍으로 코드를 바꾸면 이렇게 된다.

const signupHandler = (e) => {
  e.preventDefault();
};

const connectForm = (formId, formSubmitHandler) => {
  const form = document.getElementById(formId);
  form.addEventListener("submit", formSubmitHandler);
};

connectForm("user-input", signupHandler);

 

connectForm이 'formId', 'formSubmitHandler'라는 매개변수들을 받기 시작했고

이 함수는 이제 'user-input' 폼뿐만 아니라 다른 폼을 가져올 수 있고,

signupHandler뿐만 아니라 다른 핸들러도 사용할 수 있다.

또한 매개변수명을 통해 connectForm이 어디에 어떻게 작용할 지도 알 수 있다.

'JS' 카테고리의 다른 글

문제로 알아보는 querySelector vs querySelectorAll  (0) 2025.04.16
NodeList vs HTMLCollection  (0) 2025.04.16
const 변수 vs const 상수  (0) 2025.03.04
0.1 + 0.2 !== 0.3 (+해결방법)  (0) 2025.03.04
객체 순회 문제에서 파생된 두 가지 문제들  (0) 2025.03.03
'JS' 카테고리의 다른 글
  • 문제로 알아보는 querySelector vs querySelectorAll
  • NodeList vs HTMLCollection
  • const 변수 vs const 상수
  • 0.1 + 0.2 !== 0.3 (+해결방법)
쥬피썬더의노예
쥬피썬더의노예
오히려 좋아
  • 쥬피썬더의노예
    d.log
    쥬피썬더의노예
    글쓰기 관리
    • 분류 전체보기 (112)
      • JS (37)
      • TS (3)
      • WEB (10)
      • React.js (20)
      • Next.js (4)
      • tanstack query (2)
      • Node.js (2)
      • HTML (5)
      • CSS (13)
      • CS (1)
      • 에이전트 (1)
      • Git (4)
      • JAVA (0)
      • SQL (0)
      • db (0)
      • GSAP (0)
      • 자료구조 (1)
      • 알고리즘 (0)
      • ✨회고 (5)
      • 포꾸 (0)
      • 인터뷰 (0)
      • 개발일지 (0)
      • 일기 (1)
      • etc (3)
      • 정처기 실기 (0)
        • C (0)
        • Java (0)
        • Python (0)
      • fonts (0)
      • articles (0)
      • 도서 (0)
  • 인기 글

  • 태그

    React
    자바스크립트
    상태 관리
    아키텍처
    useEffect
    SSR
    React Query
    리액트
    프론트엔드
    zustand
    Next.js
    CSR
    HTML
    SSG
    useState
    폼
    유효성 검사
    React.JS
    javascript
    클로저
    Til
    GIT
    리팩토링
    안티그래비티
    WEB
    css
    조합 패턴
    state
    슬라이딩 윈도우
    TypeScript
  • 최근 글

  • 전체
    오늘
    어제
  • hELLO· Designed By정상우.v4.10.3
쥬피썬더의노예
함수 형태로 감싼다고 함수형 프로그래밍이 아니다
상단으로

티스토리툴바