6월 8일 (화) 고차함수 개념 재 정리

남이섬·2021년 6월 8일
0
post-custom-banner

함수 (function)

  • 변수에 할당(assignment) 할 수 있다.
  • 다른 함수의 인자(argument)로 전달될 수 있다.
  • 다른 함수의 결과로서 리턴될 수 있다.
  • 호이스팅은 선언된 위치에 관계없이 어디서든 함수를 사용할 수 있도록 합니다.(호이스팅은 선언문에서만 적용 됨)
  • 코드가 실행되는 과정에서 함수 선언부를 코드의 최상단으로 끌어올리는 것처럼 보이게 합니다.

고차 함수(일급객체)란 (higher order function)

  • 함수를 인자(argument)로 받을 수 있고, 함수의 형태로 리턴할 수 있는 함수

커리 함수(Curry function) - 함수를 리턴하는 함수

다른 함수를 인자로 받는 경우 (콜백 함수)

function double(num) {
  return num * 2;
}
function doubleNum(func, num) {
  return func(num);
}
  • 함수 doubleNum은 다른 함수를 인자로 받는 고차 함수
  • 함수 doubleNum의 첫 번째 인자 func에 함수가 들어올 경우
  • 함수 func는 함수 doubleNum의 콜백 함수
  • 아래와 같은 경우, 함수 double은 함수 doubleNum의 콜백 함수

함수를 리턴하는 경우

function adder(added) {
  return function (num) {
    return num + added;
  };
}
  • 함수 adder는 다른 함수를 리턴하는 고차 함수
  • adder는 인자 한 개를 입력받아서 함수(익명 함수)를 리턴
  • 리턴되는 익명 함수는 인자 한 개를 받아서 added와 더한 값을 리턴

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

function double(num) {
 return num * 2;
}
function doubleAdder(added, func) {
 const doubled = func(added);
 return function (num) {
   return num + doubled;
 };
}
  • 함수 doubleAdder는 고차 함수
  • 함수 doubleAdder의 인자 func는 함수 doubleAdder의 콜백 함수
  • 함수 double은 함수 doubleAdder의 콜백으로 전달

doubleAdder(5, double)(3);
=> function doubleAdder(5, double) / function(3);
=> const doubled = double(5) => 5*2 = 10
=> return function (3) => return 3 + 10 = 10

profile
즐겁게 살자
post-custom-banner

0개의 댓글