고차함수(9-11)

Blackwidow·2020년 12월 17일
0

Achievement Goals

- 일급 객체(first-class citizen)의 세 가지 특징을 설명할 수 있다.

  • 대표적인 일급객체는 함수.
    1.변수에 할당(assignment) 가능
    2.다른 함수의 인자(argument)전달 가능(콜백함수)
    3.다른 함수의 결과로 리턴 가능
    4.배열의 요소, 객체의 속성값으로 저장 가능

- 고차 함수(higher-order function)에 대해 설명할 수 있다.

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

    • 함수 doubleNum은 double이란 함수를 인자로 받으니까 고차함수다.
    • double은 콜백함수다(함수의 인자로 들어가니까)
function double(num) {
  return num * 2;
}

function doubleNum(func, num) {
  let doubledArr = [];
  return func(num);
}



let output = doubleNum(double, 4);
console.log(output); // -> 8
  1. 함수를 리턴하는 경우
  • 함수 adder는 다른 함수를 리턴함으로 고차함수이다.
  • 함수 adder는 인자 한 개를 입력받아서 익명함수를 리턴한다.
  • 익명함수는 인자 한 개를 받아서 added와 더한 값을 리턴한다.
function adder(added) { // 1.(5)들어오면
  return function (num) { // 3.(3)들어오면
    return num + added; //2.(5)값 저장, 4.(3)값 연산하여 리턴.
  };
}

let output = adder(5)(3); // -> 8
console.log(output); // -> 8
  1. 1+2 = 함수를 인자로 받고, 함수를 리턴하는 경우
  • 함수 doubleAdder은 고차함수다.
  • 함수 doubleAdder의 인자인 double함수는 콜백함수다.

function double(num) {
  return num * 2;
}

function doubleAdder(added, func) {
  const doubled = func(added);
  return function (num) {
    return num + doubled;
  };
}

doubleAdder(5, double)(3); // -> 13
profile
javascript 공부하는 sumiindaeyo

0개의 댓글