본 시리즈는 인프런 강의 함수형 프로그래밍과 JavaScript ES6+ ( 지식 공유자 : 유인동 님 ) 의 강의를 수강하면서 내용을 제 방식대로 포스팅하는 글입니다.
일급 함수
- 함수가 값으로 다뤄질 수 있다.
고차함수
- 함수를 값으로 다루는 함수
1. 함수를 인자로 받아서 실행하는 함수
const apply1 = f => f(1)
// apply1 은 고차함수다. 함수를 인자로 받아서 함수를 실행하고 있음
const add2 = a => a + 2
console.log(apply1(add2)); // 3
// (1 => 1 + 2) 인 셈이다.
console.log(apply1(a => a - 1)); // 0
const times = (f, n) => {
let i = -1;
while(++i < n) f(1);
}
times(console.log, 3); // 0 1 2
times(a => log(a + 10), 3); // 10 11 12
// 함수와 값을 인자로 받아서 함수안에서 실행하면서 원하는 인자를 적용하는 함수
// 이런 프로그래밍을 applicative programing 이라고도 한다.
2. 함수를 만들어 리턴하는 함수 ( 클로저를 만들어 리턴하는 함수 )
const addMaker = a => b => a + b;
const add10 = addMaker(10);
console.log(add10); // b => a + b 함수가 실행되었을때 함수를 리턴하고 있다.
console.log(add10(5)); // 15, 10 => 5 => 10 + 5
console.log(add10(10)); // 20, 10 => 10 => 10 + 10
// 함수가 함수를 리턴하는 함수, 클로저를 만들어 리턴하는 함수
// b => a + b 는 ( 리턴된 함수 ) 함수가 전달된 인자 a값을 기억하는 클로저 이다.
// 함수가 만들어질때의 환경 ( 전달된 인자 a ) 과 함수 자체 객체를 통칭해서 말하는 용어이다.
// 함수가 함수를 리턴할때는 클로저를 만들어서 리턴하기위해 사용한다.
'Javascript' 카테고리의 다른 글
사용자 정의 이터러블, 이터러블 / 이터레이터 프로토콜 정의 - JS ES6+ 함수형 프로그래밍 - 6 (0) | 2022.09.09 |
---|---|
Array, Set, Map 을 통해 알아보는 이터러블 / 이터레이터 - JS ES6+ 함수형 프로그래밍 - 5 (0) | 2022.09.08 |
기존과 달라진 ES6 에서의 리스트 순회 - JS ES6+ 함수형 프로그래밍 - 4 (0) | 2022.09.08 |
일급 함수 - JS ES6+ 함수형 프로그래밍 - 2 (0) | 2022.09.06 |
평가와 일급 - JS ES6+ 함수형 프로그래밍 - 1 (0) | 2022.09.06 |