함수형 자바스크립트 - 일급함수, 고차함수

권민제·2021년 7월 31일
1
post-thumbnail

함수형 프로그래밍과 JavaScript ES6+ 인프런 강의 정리

평가

  • 코드가 계산(Evaluation) 되어 값을 만드는 것
1 + 3 // 3으로 평가
[1, 2 + 3] // [1, 5]로 평가

일급

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

일급함수

  • 함수를 값으로 다룰 수 있다.
  • 조합성과 추상화의 도구
const add5 = a => a + 5; // 변수에 함수를 값으로 사용가능
log(add5); // 함수의 인자로 함수로 사용가능
log(add5(5)); // 함수의 결과를 다른 함수에 전달가능

const f1 = () => () => 1; // 함수의 결과를 함수로 사용가능
log(f()); 

const f2 = f1(); // 다른 변수에 함수를 담을 수 있다.
log(f2);
log(f2());

고차함수

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

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

  • ex1 ) apply1
const apply1 = f => f(1);
const add2 = a => a + 2;
log(apply1(add2));
log(apply1(a => a - 1));
  • ex2 ) times
const times = (f, n) => {
	let i = -1;
	while (++i < n) f(i);
};

times(log, 3);

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

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

  • ex ) addMaker
const addMaker = a => b => a + b;
const add10 = addMaker(10);
log(add10(5));
log(add10(10));
profile
성장하는 개발자!

0개의 댓글