HOF - 고계함수
JS 클로저 3편 - HOF(고계함수, Higher Order Function)
HOF hof는 여러 상황에 유동적으로 대응할 수 있는 일반화된 함수를 말한다. 기본적인 함수가 전편에서 설명했던 first class의 기능을 가질 때 HOF로 만들어질 수 있다. 로그인 기능을 예시로 HOF를 만
developefeel.tistory.com
//HOF
const hof = () => () => 5;
hof()();
const hoF = (fn) => fn(5);
hoF(function a(x) {
return x;
});
고계함수는 함수를 인자로 받고 함수를 리턴한다.
위 코드에서 hof는 인자로 받은 함수에 5라는 인자를 전달하여 리턴한다.
그리고 전달된 함수 a는 인자값을 그대로 리턴하므로
결과는 5이다.
Closure - 클로져
JS 클로저 5편 - Closure(함수 커링에서의 클로저 현상)
커링에서의 함수 생명주기 function a() { let grandpa = "grandpa"; return function b() { let father = "father"; return function c() { let son = "son"; return `${grandpa} > ${father} > ${son}`; }; }; } a()()(); a함수 (변수 : grandpa, 리턴값
developefeel.tistory.com
//Closure
const closure = function () {
let private = 1;
return function getNum() {
return private;
};
};
const getnumber = closure();
getnumber(); //1
클로져는 리턴되는 내장함수를 다른 변수에 저장해
저장된 시점의 함수상태를 유지하는 것이다.
위 코드에서 private의 값이 변화하더라도
1인 시점에 저장되었으므로 getnumber는 계속해서 1을 리턴한다.
Currying - 커링
JS 클로저 4편 - Currying(함수 커링 기법)
Currying 커링은 두 개 이상의 인자를 받는 함수의 구조를 분리하여 인자를 받는 중간에 개입할 수 있게 하는 방법이다. const multiplyBy = function (num1) { return function (num2) { return num1 * num2; }; }; const multip
developefeel.tistory.com
//currying
const multiply = (a, b) => a * b;
multiply(5, 3);
const curriedMultiply = (a) => (b) => a * b;
curriedMultiply(5)(3);
const curriedMultiplyBy5 = curriedMultiply(5);
curriedMultiplyBy5(3); //15
커링은 인자를 나눠서 받아서
첫 번째 인자의 값을 기억하여 사용하는 방식이다
위 코드에서는 5를 인자로 전달한 상태의 값을 저장한 곳에
마지막 인자인 3을 전달하면 연산이 마무리되는 것이다.
'Front-end > JavaScript' 카테고리의 다른 글
JS FP 7편 - Memoization (0) | 2023.03.12 |
---|---|
JS FP 6편 - 부분 적용 함수(Partial Application) (0) | 2023.03.11 |
JS FP 4편 - 불변성(Immutability) (0) | 2023.03.09 |
JS FP 3편 - 선언형과 명령형(Imperative vs Declarative) (0) | 2023.02.20 |
JS FP 2편 - 참조 투명성과 멱등성(Idempotence) (0) | 2023.02.19 |