본문 바로가기

Javascript

고차 함수 - JS ES6+ 함수형 프로그래밍 - 3

본 시리즈는 인프런 강의 함수형 프로그래밍과 JavaScript ES6+ ( 지식 공유자 : 유인동 님 ) 의 강의를 수강하면서 내용을 제 방식대로 포스팅하는 글입니다.

 

함수형 프로그래밍과 JavaScript ES6+ - 인프런 | 강의

ES6+와 함수형 프로그래밍을 배울 수 있는 강의입니다. 이 강좌에서는 ES6+의 이터러블/이터레이터/제너레이터 프로토콜을 상세히 다루고 응용합니다. 이터러블을 기반으로한 함수형 프로그래밍,

www.inflearn.com

일급 함수

- 함수가 값으로 다뤄질 수 있다.

고차함수

- 함수를 값으로 다루는 함수

 

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 ) 과 함수 자체 객체를 통칭해서 말하는 용어이다.
// 함수가 함수를 리턴할때는 클로저를 만들어서 리턴하기위해 사용한다.