고차함수에 대하여

hyo·2021년 9월 14일
0

[Javascript] 기초 학습

목록 보기
45/62

고차 함수란

고차함수(higher order function)는 함수를 인자(argument)로 받을 수 있고, 함수의 형태로 리턴할 수 있는 함수이다.

함수변수에 저장할 수 있고, 함수함수를 담은 변수인자로 전달받을 수 있다.
마찬가지로, 함수 내부에서 변수함수할당할 수 있고, 함수는 이 변수를 리턴할 수 있다.

여기서 변수에 할당하지 않고 함수를 바로 이용할 수 있다. 어떤 고차 함수에 함수를 인자로 전달하고, 고차 함수는 함수 자체를 리턴한다.(변수가 빠졌을 뿐, 동일하게 동작함) 이때 다른 함수(caller)인자(argument)로 전달되는 함수를 콜백 함수(callback function)라고 한다.

콜백 함수를 전달받은 고차 함수는, 함수 내부에서 이 콜백 함수를 호출(invoke)할 수 있다.caller는 조건에 따라 콜백 함수의 실행 여부를 결정할 수 있다. 아예 호출하지 않을 수도 있고,여러 번 실행할 수도 있다.

'함수를 리턴하는 함수'커리 함수 라고 한다. 정확하게 구분하자면, 고차함수가 커리 함수를 포함한다.

//함수를 인자로 받는 함수 -> 콜백 함수
//함수를 리턴하는 함수 -> 커리 함수

'함수를 리턴하는 함수''함수를 인자로 받는 함수' 모두, 용어를 고차 함수로 사용해도 상관은 없다.

  • 다른 함수를 인자로 받는 경우

    -->
    함수 B는 다른 함수를 인자로 받는 고차 함수이다.
    함수 B의 첫 번째 인자 func에 함수가 들어올 경우, 함수 func는 함수 B의 콜백 함수이다.
    위와 같은 경우, 함수A는 함수B콜백 함수 이다.

  • 함수를 리턴하는 경우

-->
함수 A는 다른 함수를 리턴하는 고차 함수이다.
A는 인자 한 개를 입력받아서 함수(익명 함수)를 리턴한다.
리턴되는 익명 함수는 인자 한 개를 받아서 i와 더한 값을 리턴한다.
A는 함수이므로 함수 호출 기호 '()'를 사용할 수 있다.

  • 함수를 인자로 받고, 함수를 리턴하는 경우

-->
함수 B고차 함수 이다.
함수 B의 인자 func는 함수 B콜백 함수 이다.
함수 A는 함수 B의 콜백으로 전달되었다.

B(5, A)는 함수이므로 함수 호출 기호 '()'를 사용할 수 있다.
B가 리턴하는 함수를 변수에 저장할 수 있다.(일급 객체)

profile
개발 재밌다

0개의 댓글