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 |