[TIL] 함수형 자바스크립트 기본기

Dorr·2021년 8월 9일
0
post-custom-banner

기본기

평가

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

일급

  • 값으로 다룰 수 있다.
  • 변수에 담을 수 있다.
  • 함수의 인자로 사용될 수 있다.
  • 함수의 결과로 사용될 수 있다.

일급 함수

  • 자바스크립트에서 함수는 일급이다. => 함수를 값으로 다룰 수 있다.
  • 조합성과 추상화의 도구
const add10 = (a) => a + 10;

console.log(add10); // a => a + 10
console.log(add10(4)); // 14

const f1 = () => () => 1;
console.log(f1()); // () => 1

const f2 = f1();

console.log(f2); // () => 1
console.log(f2()); // 1

수학이랑 똑같이 생각하면 될 듯하다.

고차 함수

함수를 값으로 다루는 함수

  1. 함수를 인자로 받아서 실행하는 함수
  2. 함수를 만들어 리턴하는 함수 (클로저를 만들어 리턴하는 함수)

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

const apply1 = (f) => f(1);
const add2 = (a) => a + 2;

console.log(apply(add2)); // 3
/* 
apply(add2) 
(add2) => add2(1)
(add2) => (1) => 1 + 2 
*/
const times = (f, n) => {
  let i = -1;
  while(++i < n>) f(i);
};

times(console.log, 3);
// 0
// 1
// 2

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

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

const addMaker = (a) => (b) => a + b;
const add10 = addMaker(10);

console.log(add10); // b => a + b
console.log(add10(5)); //15
console.log(add10(10)); //20
post-custom-banner

0개의 댓글