자바스크립트를 함수형 프로그래밍에 알맞은 언어로 만들어주는 특성이 바로 자바스크립트가 고차 함수 개념을 받아들인 다는 것이다.
따라서 고차 함수가 무엇인지 소개하고 앞으로 개발하면서 자주 사용하게 될 고차 함수들의 사용법을 설명하려고 한다.
고차 함수(Higher-Order Function)란?
고차 함수는 함수를 인자로 받거나 함수를 반환하는 함수를 말한다.
이때 다른 함수(caller)의 인자(argument)로 전달되는 함수를 콜백 함수(callback function)라고 한다.
콜백 함수를 전달받은 함수는 이 콜백 함수를 호출(invoke)할 수 있다. 조건에 따라서 콜백 함수의 실행 여부를 결정할 수 있고 여러 번 실행할 수도 있다.
// 다른 함수를 인자로 받는 경우
function doubleNumber(num){
return num * 2;
}
function multiply(func, num){
return func(num);
}
console.log(multiply(doubleNumber, 10); // 20
함수 multiply는 다른 함수(func)를 인자로 받는 고차 함수다. 함수 multiply의 첫 번째 인자 func에 함수가 들어올 경우에, func는 multiply의 콜백 함수이다.
한편, '함수를 리턴하는 함수'만을 의미하는 용어가 따로 존재한다. 이 함수를 고안해 낸 논리학자 하스켈 커리(Haskell Curry)의 이름을 따라 커리 함수라고 부른다.
따로 커리 함수라는 용어를 사용하는 경우, 고차 함수를 '함수를 인자로 받는 함수'에만 한정지어서 사용하기도 한다.
// 함수를 리턴하는 경우
function adder(added){
return function (num) {
return num + added;
}
}
const add10 = adder(10);
console.log(add10(5)); // 15
const add35 = adder(35);
console.log(add35(5)); // 40
함수 adder는 다른 함수를 반환하는 고차 함수다. adder는 인자 한 개(added)를 입력받아서 익명 함수를 반환한다. 반환되는 익명 함수는 인자 한 개를 받아서 added와 더한 값을 반환한다.
다음 블로그에서 알아두면 편하고 자주 사용하게 될 고차 함수들의 사용법을 설명한다.
요약
- 고차 함수는 함수를 인자로 받거나 함수를 반환할 수도 있다.
References
velog.io/@rememberme_jhk/JS-%EA%B3%A0%EC%B0%A8%ED%95%A8%EC%88%98-higher-order-function
'Programming Language > JavaScript' 카테고리의 다른 글
[번역] 최신 모드, "use strict" (0) | 2021.12.10 |
---|---|
자바스크립트에서 자주 사용하는 고차 함수(forEach, filter, sort, map, reduce) - 2 (0) | 2021.03.13 |
JavaScript란 이름은 어떻게 지어졌을까? (0) | 2021.03.09 |