관리 메뉴

평행우주 : world 1

[JS] 콜백함수와 고차함수 본문

텃밭 2 : FE/JavaScript

[JS] 콜백함수와 고차함수

parallelworlds 2022. 2. 14. 03:52

 

콜백 함수란

자바스크립트의 함수는 일급 객체이므로, 함수의 매개변수를 통해 함수를 전달할 수 있다.

  • 함수의 매개변수를 통해 다른 함수의 내부로 전달되는 함수를 콜백함수라고 하며,
  • 매개 변수를 통해 함수의 외부에서 콜백 함수를 전달받은 함수를 고차함수라고 한다. 

 
 
 
 

고차 함수란

 

  • 고차 함수(higher order function)는 함수를 인자(argument)로 받을 수 있고, 함수의 형태로 리턴할 수 있는 함수. 
  • 고차함수는 콜백함수를 자신의 일부분으로 합성한다.
  • 콜백 함수를 전달받은 고차 함수는, 함수 내부에서 이 콜백 함수를 호출(invoke) 할 수 있다.
  • 고차함수는 매개변수를 통해 전달받은 콜백함수의 호출시점과 실행 여부를 조건에 따라 결정할 수 있다.
  • 콜백함수는 고차 함수에 의해 호출되며, 이때 고차함수는 필요에 따라 콜백함수에 인수를 전달할 수 있다
  • '함수를 리턴하는 함수'를 고안해 낸 논리학자 하스켈 커리(Haskell Curry)의 이름을 따, 커리 함수라고도 한다.
  • 따로 커리 함수라는 용어를 사용하는 경우에는, 고차 함수란 용어를 '함수를 인자로 받는 함수'에만 한정해 사용하는 경우도 있다.
  • 그러나 정확하게 구분하자면, 고차 함수가 커리 함수를 포함하는 관계. 

 

 

 

+)

  • 콜백 함수로서 전달된 함수 리터럴은 고차함수가 호출될 때마다 평가되어 함수 객체를 생성한다
  • 따라서 콜백함수를 다른 곳에서도 호출할 필요가 있거나, 콜백 함수를 전달 받는 함수가 자주 호출된다면
  • 함수 외부에서 콜백 함수를 정의한 후 함수 참조를 고차 함수에 전달하는 것이 효율적이다

 

Comments