ES6+함수형-함수형 자바스크립트 기본기

Min·2021년 2월 16일
0

JavaScript

목록 보기
17/18
post-thumbnail

함수형 프로그래밍과 JavaScript ES6+ 강의를 수강하며 정리한 내용입니다.

1. 평가와 일급

1) 평가

  • 코드가 계산(Evaluation) 되어 값을 만드는 것

2) 일급

  • 값으로 다룰 수 있다.
  • 변수에 담을 수 있다.
  • 함수의 인자로 사용될 수 있다.
  • 함수의 결과로 사용될 수 있다.
const a = 10; // 변수에 담을 수 있다.
const add10 = a => a + 10; // a + 10 : 함수의 결과로 사용될 수 있다.
const r = add10(a); // add10(a)의 a : 함수의 인자로 사용될 수 있다.
log(r);

2. 일급 함수

일급 함수

  • 함수를 값으로 다룰 수 있다.
  • 조합성과 추상화의 도구
const add5 = a => a + 5; // 함수를 값으로 다루어 add5에 넣을 수 있다.
log(add5); // 함수의 인자로 함수가 사용될 수 있다.
log(add5(5)); // 함수를 평가해 결과로 만들어 값을 다른 함수에게 전달할 수 있다.

const f1 = () => () => 1; // 함수의 결과값으로 함수가 사용될 수 있다.
log(f1()); // () => 1

const f2 = f1();
log(f2); // () => 1
log(f2()); // 출력:1, 원하는 시점에 평가 가능

3. 고차 함수

1) 일급 함수

  • 함수가 값으로 다뤄질 수 있다.

2) 고차 함수

  • 함수를 값으로 다루는 함수

① 함수를 인자로 받아서 실행하는 함수

  • apply1
  • times
const apply1 = f => f(1); // 함수가 함수를 받아 안에서 실행
const add2 = a => a + 2;
log(apply1(add2)); // const apply1 = f => (a => a + 2)(1)
log(apply1(a => a - 1));

// 숫자(n)만큼 함수(f)를 실행하는 함수(times)
const times = (f, n) => {
  let i = -1;
  while (++i < n) f(i);
};

times(log, 3);

times(a => log(a + 10), 3);

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

  • addMaker
const addMaker = a => b => a + b; // b => a + b 함수를 리턴
// 클로저 : b => a + b 함수는 파라미터 a를 계속 기억
const add10 = addMaker(10);
log(add10(5));
log(add10(10));
profile
slowly but surely

0개의 댓글