javascript

함수형 JavaScript 기본기

아래의 순서대로 살펴볼 것이다.

  1. 평가와 일급
  2. 일급 함수
  3. 고차 함수

 

 

 


 

 

 

1. 평가와 일급

평가

- 코드가 계산되어 값을 만드는 것

ex) 1 + 1 이라는 코드가 있다고 가정을 한다면 이 코드는 2로 평가된다.

 

일급

- 값으로 다룰 수 있다.

- 변수에 담을 수 있다.

- 함수의 인자로 사용될 수 있다.

- 함수의 결과로 사용될 수 있다.

const a = 10;
const add10 = a => a + 10;
const r = add10(a);
console.log(r); //20

 

 

2. 일급 함수

자바스크립트에서 함수일급이다.

함수가 일급이라는 것은 곧 값으로 다룰 수 있다는 말이며, 함수안에 값으로서 담길 수 있다는 말이다.

const log = console.log

const add5 = a => a + 5;
log(add5); //a => a + 5 //함수 안에 또 다른 함수를 값으로 넣음
log(add(5)); //10 //함수를 넣을 때 파라미터를 넣어줄 수도 있음

// 함수의 결과값으로 함수가 사용될 수 있음
const f1 = () = () => 1;
log(f1()); //() => 1

const f2 = f1();
log(f2); //() => 1
log(f2()); //1

 

 

3. 고차 함수

일급 함수: 함수가 으로 다뤄질 수 있다는 개념

고차 함수: 함수를 으로 다루는 함수

 

고차함수의 종류 두 가지

1. 함수를 인자로 받아서 실행해주는 함수

2. 함수를 만들어서 리턴하는 함수

 

 

1. 함수를 인자로 받아서 실행해주는 함수

const log = console.log

//case1) apply1

const apply1 = f => f(1); //apply1함수는 add2함수(a => a + 2)를 받아서 이 함수를 내부에서 실행해준다.
const add2 = a => a + 2;
log(apply1(add2)); //3
log(apply1(a => a - 1)); //0


//case2) times(Applicative Programming)

const times = (f, n) => {
	let i = -1;
    while (++i < n) f(i);
}

times(log, 3);
times(a => log(a+10), 3); //times함수는 a => log(a+10)함수를 받아서 이 함수를 내부에서 실행해준다.

 

2. 함수를 만들어서 리턴하는 함수

const addMaker = a => b => a + b;
const add10 = addMaker(10);
log(add10(5)); //15
log(add10(10)); //20

line 1의 b => a + b 함수는 a에 대해 기억을 하고 있는 클로저(Closer)이기도 하다.

본 예시에서의 클로저는 함수가 만들어질 때의 환경인 a와 함수 객체 자체(b => a + b)를 통칭하는 것이다.

 

즉 본 예시는 addMaker클로저를 리턴하는 함수가 되는 것이다.

 

결국 이렇게 함수가 함수를 만들어서 리턴하는 경우, 클로저를 만들어서 리턴하게 된다.

그래서 클로저를 만들어야 할 경우에 이러한 방법을 사용한다.

 

 

 

 

 

출처 https://www.inflearn.com/course/functional-es6/dashboard

'javascript' 카테고리의 다른 글

함수형 JavaScript 공부하기  (0) 2021.07.29
JavaScript에서의 비동기 프로그래밍 정리  (0) 2021.07.09