[JS] 고차 함수

허북이_·2022년 7월 21일
0

JS

목록 보기
12/19
post-thumbnail

일급 객체

JavaScript에는 특별한 대우를 받는 일급 객체(first-class citizen)가 있습니다. 대표적인 일급 객체 중 하나가 함수
입니다. JavaScript에서 함수는 아래와 같이 특별하게 취급됩니다.

  • 변수에 할당(assignment) 할 수 있다.
  • 다른 함수의 전달인자(argument)로 전달될 수 있다.
  • 다른 함수의 결과로서 리턴될 수 있다.

함수를 변수에 할당할 수 있기 때문에, 함수를 배열의 요소나 객체의 속성값으로 저장할 수 있습니다. 함수를 데이터(string, number, boolean, array, object)처럼 다룰 수 있습니다.

고차 함수

: 고차 함수(higher order function)는 함수를 전달인자(argument)로 받을 수 있고, 함수를 리턴할 수 있는 함수입니다.

  1. 다른 함수를 인자로 받는 경우
function double(num) {
  return num * 2;
}

function doubleNum(func, num) {
  return func(num);
}

let output = doubleNum(double, 4);
console.log(output); // -> 8
  1. 함수를 리턴하는 경우 = 클로저 함수

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

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

const addTwice3 = doubleAdder(3, double);
addTwice3(2); // --> 8

내장 고차 함수

JavaScript에는 기본적으로 내장된 고차 함수가 여럿 있습니다. 그중에서 대표적인 배열 메소드는 아래와 같습니다.

  • filter

    배열의 요소 중 특정 조건을 만족하는 요소로만 이루어진 새로은 배열을 반환합니다.
  • map

    배열의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다.
  • reduce

    배열의 각 요소에 대해 주어진 리듀서 함수를 실행하고, 하나의 결과값을 반환합니다.
profile
인간 거북이 허북이

0개의 댓글