1. 평가
코드가 평가되어 값을 만드는 것
// true console.log([1, 1 + 2 + 3] === [1, 5]);
2. 일급
(1) 값으로 다룰 수 있다. (평가)
(2) 변수에 담을 수 있다.
const a = 10; // 10 console.log(a);
(3) 함수의 인자로 사용될 수 있다.
const a = 1; const b = 2; const add = (a, b) => a + b; // 3 console.log(add(a, b));
(4) 함수의 결과로 사용될 수 있다.
const a = 1; const b = 2; const add = (a, b) => a + b; const c = add(2, 3); // 5 console.log(c);
3. 일급 함수
(1) 함수를 값으로 다룰 수 있다.
(2) 조합성과 추상화의 도구
const add5 = (a) => a + 5; // a => a + 5 console.log(add5); // 10 console.log(add5(5)); const f1 = () => () => 1; // () => 1 console.log(f1()); // 1 console.log(f1()());
4. 고차 함수
함수를 값으로 다루는 함수
(1) 함수를 인자로 받아서 실행하는 함수
const apply1 = (f) => f(1); const add2 = (a) => a + 2; // 3 log(apply1(add2)); // 0 log(apply1((a) => a - 1));
(2) 함수를 만들어 리턴하는 함수
const addMaker = (a) => (b) => a + b; const add20 = addMaker(20); // 25 console.log(add20(5)); // 30 console.log(addMaker(10)(20));
'Common > Javascript' 카테고리의 다른 글
함수형 프로그래밍 - (3) map, filter, reduce (0) | 2021.09.03 |
---|---|
함수형 프로그래밍 - (2) 순회와 Iterable/Iterator 프로토콜 (0) | 2021.08.26 |