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