고차 함수(HOC)란?
고차 함수(Higher Order Function, HOC)는 자바스크립트에서 다른 함수를 인수로 전달받거나, 함수를 반환값으로 가지거나, 혹은 두 가지 모두 수행하는 특별한 유형의 함수입니다. 고차 함수는 클로저(closure)와 함께 사용될 때 자바스크립트에서 매우 강력한 도구가 됩니다.
이번 예제에서는 두 수의 곱을 구할 수 있는 자바스크립트 고차 함수를 작성해 보겠습니다.
예제 코드
다음은 두 수의 곱을 계산하는 고차 함수의 전체 코드입니다.
const num1 = 24;
const num2 = 5;
const productHOC = num1 => {
return product = num2 => {
return num1 * num2;
};
};
console.log(productHOC(num1)(num2));코드 설명
위 코드의 동작 방식을 살펴보겠습니다.
productHOC는 첫 번째 숫자 num1을 인수로 받아 내부에 또 다른 함수를 반환합니다. 이렇게 반환된 내부 함수는 두 번째 숫자 num2를 인수로 받아 num1 * num2의 결과를 리턴합니다.
여기서 핵심은 클로저입니다. 내부 함수는 외부 함수의 변수인 num1에 접근할 수 있으므로, 두 단계로 나누어 호출하는 productHOC(num1)(num2) 형태의 커링(currying) 패턴이 가능해집니다.
실행 결과
콘솔에 출력되는 결과는 다음과 같습니다.
120
24와 5를 곱한 값인 120이 정상적으로 출력되는 것을 확인할 수 있습니다.