자바스크립트 핵심컨샙33 #22. High Order Functions(고차 함수)

4768 단어 JavaScriptJavaScript

고차 함수(High Order Functions)란 함수를 인자로 전달받거나 함수를 리턴하는 함수를 말한다. 여기서 생각나는게 전에 포스팅했던 '클로저'함수와 'map, filter, reduce' 함수들이 고차함수로 통한다. (여기서 인자로 전달되어 실행되는 함수를 '콜백'함수라고 한다.)

인자로 전달하고 함수의 값으로 리턴받고 변수에 담을 수 있는 이유는 자바스크립트의 함수는 일급 객체(First class object)로 취급하기때문이다.

🤩여기서 일급객체란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다.
1. 무명의 리터럴로 표현 가능 : const func = (x) => 1 + x
2. 변수나 자료 구조(객체, 배열 등)에 저장할 수 있음 : const obj = [func]
3. 함수의 매개변수에 전달 가능 : let func2 = (func) => func + 2
4. 반환값으로 사용 가능 : let func3 = () => return function(){alert("Hi")}

//클로저 형성, 순수함수면서 고차함수
function makeCounter(predicate) {
  let num = 0;
  
  return function () {
    num = predicate(num);
    return num;
  };
}

function increase(n) {
  return ++n;
}

function decrease(n) {
  return --n;
}

const increaser = makeCounter(increase);
console.log(increaser()); // 1
console.log(increaser()); // 2

const decreaser = makeCounter(decrease);
console.log(decreaser()); // -1
console.log(decreaser()); // -2

여기까지 읽으면 전 포스팅(클로저, map, filter, reduce, 순수함수 등등)과 겹치는 부분이 많다. 전 포스팅의 함수들이 모두 고차함수였던 것이였다!

좋은 웹페이지 즐겨찾기