일급이란?
- 값으로 다룰 수 있다.
- 변수에 담을 수 있다.
- 함수의 인자로 사용될 수 있다.
- 함수의 결과로 사용될 수 있다.
💡 함수가 일급객체라는 것?
- 함수를 값으로 다룰 수 있다. =>
const add5 = a => a + 5;
,const f1 = () => () => 1;
- 조합성과 추상화의 도구이다.
고차함수의 정의는 함수를 값으로 다루는 함수를 말한다. 2가지의 종류가 있다
- 함수를 인자로 받아서 실행하는 함수
- 함수를 만들어 리턴하는 함수(클로저를 만들어 리턴하는 함수)
const func1 = (fn) => fn(1); // 인자로 함수를 받고, 그 함수에 인자 1을 전달하고 호출한다. const add = (a) => a + 2; console.log(func1(add)); // 3 => func1함수에 add함수가 인자로 들어가고 add함수에 인자 1이 전달되어 호출된 반환값을 출력. // const addMaker = a => b => a + b; // 함수의 리턴값이 b => a + b라는 함수를 리턴한다. const add10 = addMaker(10); // add10이라는 변수에는 결국 b => 10 + b라는 함수가 할당된다. console.log(add10(5)); // 15