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

윤성민·2020년 7월 17일
0
post-thumbnail

평가와 일급

평가

  • 코드가 계산되어 값을 만드는 것을 의미.

일급

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

일급 함수

자바스크립트에서는 함수는 일급이다.

함수를 값으로 다룰 수 있다.

조합성과 추상화의 도구로 활용될 수 있기 때문에 매우 유용하다.

const log = console.log;
const add5 = a => a + 5;
log(add5); // 함수의 인자로 함수를 사용할 수 있다. a => a + 5
log(add5(5)); // 함수에게 값을 전달할 수 있다. 10
const f1 = () => () => 1;

log(f1()); // () => 1

const f2 = f1();
log(f2); // () => 1
log(f2()); // 1

고차 함수

일급 함수

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

고차 함수

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

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

  • apply1
  • times
const log = console.log;
const apply1 = f => f(1); // 함수가 함수를 받아 인자에 1을 넣는다. 
const add2 = a => a + 2;
log(apply1(add2)); // 3
log(apply1(a => a - 1)); // 0

const times = (f, n) => {
	let i = -1;
	while (++i < n) f(i);
}

times(log, 3); // 0, 1, 2
times(a => log(a+10), 3) // 10, 11, 12

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

  • addMaker
const addMaker = a => b => a + b; 
//함수이면서 a를 계속 기억하는 클로저를 리턴하는 함수.
const add10 = addMaker(10)
log(add10(5)); // 15
log(add10(10)); // 20

출처

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

profile
기록은 기억보다 강하다.

0개의 댓글