Study/JavaScript

함수형 프로그래밍과 JavaScript ES6+ (1)

maino77 2022. 3. 3. 23:12

평가: 코드가 계산되어 값을 만드는 것.

일급: [값]으로 다룰 수 있다, [변수]에 담을 수 있다. 함수의 [인자]로 사용될 수 있다. 함수의 [결과]로 사용될 수 있다.

 

자바스크립트에서 함수는 일급이다. 즉 함수를 값으로 다룰 수 있다는 의미입니다.

우리는 이것을 "일급 함수"라고 합니다.

const add5 = a=> a+5;
log(add5);
// console.log(add5)는 a=>a+5 가 나온다.
// console.log(add5(5))는 10이 나온다.

 

함수의 결과값으로 함수가 사용될 수 있습니다.

const f1 = () => () => 1;
console.log(f1()); // () => 1

// 또한 다른 함수의 변수에 담을 수 있다.
const f2 = f1();
console.log(f2); // () => 1
console.log(f2()); // 1

 

 

고차함수는 함수를 값으로 다루는 함수이다.

고차함수는 크게 두 가지로 나눌 수 있습니다.

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

// 함수를 인자로 받아서 실행한다
const gocha1 = g => g(1);
const add2 = a => a + 2;
console.log(gocha1(add2)); // 3
console.log(gocha1(a => a -1)); // 0

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

times(log, 3); // 0,1,2
times(a => log(a+10), 3); // 10, 11, 12

 

2. 함수를 만들어 리턴하는 함수(클로저를 만들어 리턴하는 함수)가 있습니다.

// addMaker는 a를 계속 기억하기 때문에 클로저를 만든다고 할 수 있다.
  const addMaker = a => b => a + b;
  const add10 = addMaker(10);
  log(add10(5)); // 15
  log(add10(10)); // 
  // 연산과정.
  // 1. a값에 addMakaer(10)넣어 add10에는 b => 10 + b 가 됨
  // 2. b값으로 add10(10)선언으로 10+10은 20이 된다.
728x90