고차 함수(Higher-Order Function)

담당
이진유
완료
완료
유형
JavaScript
비고
 
고차 함수란 무엇인가요?
고차 함수는 함수를 매개변수로 가지는 함수 혹은 함수를 반환하는 함수를 고차 함수라고 합니다. 즉, 함수를 매개 변수로 받거나 함수를 출력으로 반환하는 함수를 고차 함수라고 합니다. 대표적으로 Array의 map, filter, reduce와 같은 함수들이 있습니다.

요약

고차 함수는 함수를 매개변수로 가지는 함수 혹은 함수를 반환하는 함수를 고차 함수라고 합니다. 즉, 함수를 매개 변수로 받거나 함수를 출력으로 반환하는 함수를 고차 함수라고 합니다. 대표적으로 Array의 map, filter, reduce와 같은 함수들이 있습니다.
 

고차함수란?

고차 함수의 개념을 완전히 이해하기 위해서는 함수형 프로그래밍(Functional Programming) 이 무엇인지와 퍼스트 클래스 함수(First-Class Functions) 의 개념을 이해하는 것이 먼저입니다.
 

함수형 프로그래밍?

간단하게 말해서 함수형 프로그래밍은 함수를 다른 함수의 파라미터로 넘길 수도 있고 반환(return) 값으로 함수를 받을 수도 있는 프로그래밍 형태를 말합니다.
 

일급 객체 함수 (First Class Functions)

위키 백과에서 일급 객체(영어: first-class object)란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킵니다. 보통 함수에 인자로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원할 때 일급 객체라고 합니다.
 
로빈 포플스톤은 일급 객체를 구성하는 요소는 기본적인 권리가 있다는, 다음의 정의를 내렸습니다.
  1. 모든 요소는 함수의 실제 매개변수가 될 수 있다.
  1. 모든 요소는 함수의 반환 값이 될 수 있다.
  1. 모든 요소는 할당 명령문의 대상이 될 수 있다.
  1. 모든 요소는 동일 비교의 대상이 될 수 있다.
 
자바스크립트에서 함수를 일급 시민(first-class citizen)으로 대해준다는 것을 들어봤을 겁니다. 왜냐하면 자바스크립트 또는 다른 함수형 프로그래밍 언어 함수들은 전부 객체(objects)이기 때문입니다.
 
자바스크립트에서 변수에 함수를 할당할 수 있습니다. 함수도 객체니까요.
const square = function(x) { return x * x; } // prints 25 square(5);
 
함수의 매개변수도 마찬가지입니다. 함수도 객체이니까 매개 변수로 함수에 전달해줄 수 있습니다.
function formalGreeting() { console.log('How are you?'); } function casualGreeting() { console.log("What's up?"); } function greet(type, greetFormal, greetCasual) { if(type === 'formal') { greetFormal(); } else if(type === 'casual') { greetCasual(); } } // prints "What's up?" greet('casual', formalGreeting, casualGreeting);
 
일급 객체와 함수형 프로그래밍에 대해서 알아봤습니다. 그렇다면 고차 함수는 무엇일까요? 고차 함수는 함수를 인자로 받거나 또는 함수를 반환하는 함수를 말합니다. 간단히 말하자면 고차 함수는 함수를 인자로 받거나 함수를 출력으로 반환하는 함수를 말합니다. 대표적으로 Arraymap, filter, reduce 등과 같은 함수들이 있습니다.
 
 
[참고 사이트]