Frontend/Functional Programming

함수형 자바스크립트 기본기

만발한매화 2025. 2. 14. 19:34

본 문서는 유동균의 함수형 프로그래밍 강의를 수강하고 공부한 자료이다.

 

1. 평가 : 코드가 계산되어 값을 만드는 것

 

2. 일급

- 값으로 다룰 수 있다.

- 변수에 담을 수 있다.

- 함수의 인자로 사용할 수 있다.

- 함수의 결과로 사용될 수 있다.

 

3. 함수 역시 일급이다.

- 함수를 값으로 다룰 수 있다. = 변수에 함수를 담을 수 있다.

- 함수는 평가를 통해 값을 다른 함수에게 전달할 수 있다.

- 함수의 결과값으로 함수를 가질 수 있다.

- 함수형 프로그래밍에서 조합성과 추상화의 도구로 사용이 가능하다.

 

4. 고차함수 : 함수를 값으로 다루는 함수

  1. 함수를 인자로 받아 실행하는 함수

    - 함수를 인자로 받아서 내부에서 실행하여 특정인자 적용하는 프로그래밍 : applicative programming

  2. 함수를 만들어 리턴하는 함수 (클로저를 만들어 리턴하는 함수)

    - 클로저 : 함수가 만들어질때의 인자를 기억하고 있는 함수

 

5. 클로저

- 함수와 함수가 선언덴 렉시컬 환경을 함께 저장하는 패키지이다.

function makeMultiplier(multiplier) {
  // multiplier는 makeMultiplier의 렉시컬 환경에 있음
  return function (num) {
    return num * multiplier; // 내부 함수가 외부 함수의 multiplier를 참조
  };
}

const triple = makeMultiplier(3); // triple이 클로저를 형성
console.log(triple(4)); // 12 (3 * 4)

여기서 makeMultiplier 실행이 끝났지만, 반환된 함수는 여전히 multiplier를 기억하고 있다.

- 장점

  • 상태 유지: 함수가 호출될 때마다 특정 상태를 기억할 수 있음
  • 캡슐화: 외부에서 내부의 값을 직접 변경하지 못하게 보호.
  • 동적 함수 생성: 각기 다른 값을 기억하는 함수들을 손쉽게 생성할 수 있음.