고차함수

ROCKBELL·2022년 11월 17일
0

자바스크립트

목록 보기
10/25

고차함수

  • 함수를 전달인자로 받는 함수
  • 함수를 리턴하는 함수
  • 함수를 전달인자로 받으면서 함수를 리턴하는 함수

고차함수를 쓰는 이유

추상화를 통해 생산성을 향상 시키기 위해

추상화

복잡한 어떤 것을 압축해서 핵심만 추출한 상태로 만드는 것

  • 값 수준의 추상화 : 단순한 값을 전달 받아 처리하는 수준
  • 사고 수준의 추상화 : 함수를 전달받아 처리하는 수준

일급객체

자바스크립트에서도 특별 대우를 받는 일급객체 (first-class-citizen)가 존재하는데, 대표적인 일급 객체 중 하나가 함수 입니다

일급객체의 특징 3가지

  1. 함수를 변수에 할당 할수 있습니다
const func = function(num) {
	return num * num;
}
  1. 다른 함수의 전달인자(argument)로 전달될 수 있습니다
const sqaure = function(num) {
	return num * num;
}

const result = function(func) {
	return func();
}

retrult(sqaure(3));
  1. 다른 함수의 결과로써 리턴 될 수 있습니다
const result = function(add) {
	return function(num) {
	  return num + add
   };
}

그리하여, 클로저 또한 일급 객체 함수의 개념을 활용한 기술 이라고 할 수 있습니다

콜백함수

함수(caller)의 전달인자로 전달되는 함수를 콜백함수(callback function)라고 합니다. 콜백함수를 전달받은 고차함수(caller)는 함수 내부에서 콜백함수를 호출(invocke) 할 수도 있습니다

  • 고차함수 : 함수를 전달인자로 받는 함수
  • 커링함수 : 함수를 리턴하는 함수

고차함수 ⊃ 커링함수 : 고차함수는 커링함수를 포함하는 개념입니다

클로저 vs 커링함수

공통점

  • 함수를 리턴하는 함수
  • 객체지향 프로그래밍의 프라이빗 메서드와 유사한 기능

차이점

  • 클로저
    • 내부함수에서 외부함수 내에 선언된 지역 변수(값)를 사용 !!
  • 커링
    • 외부함수의 전달인자(argument)를 재사용하고 싶을 때 사용
profile
luv it

0개의 댓글