Javascript _ 고차함수 1

이승미·2022년 5월 24일
0

고차함수 너무 어려워......

0524 Tue

오늘은 드디어 섹션2 학습 첫날이다. 섹션2부터 어려운 내용이 많아진다고 해서 긴장을 많이 했었는데 역시나 처음부터 섹션1과는 차원이 다른 난이도였다.. 뿐만 아니라 주어진 시간도 매우 짧아서 솔로 코플릿 문제도 점심 시간 없이 겨우겨우 풀 수 있었다. 여러모로 자괴감과 좌절감을 많이 느낀 하루였지만 지금 느끼는 이 감정을 학습에 대한 열정으로 그대로 옮겨놓아 열심히 공부해봐야겠다!

고차함수의 이해

1. 일급객체

고차함수에 대해서 이해하기 위해서는 우선 일급객체의 개념에 대해서 알아야 한다. 일급객체란, 말 그대로 자바스크립트 내에서 특별한 대우를 받는 객체를 말한다. 그리고 이 일급객체의 대표적 예시가 바로 함수이다.
함수가 일급객체로서 받는 대우는 다음과 같다.

변수에 할당(assignment) 할 수 있다. -> 함수를 배열의 요소나 객체의 속성값으로 저장할 수 있다.
다른 함수의 전달인자(argument)로 전달될 수 있다.
다른 함수의 결과로서 리턴될 수 있다.

이런 일급객체로서 갖는 특징인 다른 함수를 전달인자로 받을 수 있고, 함수를 리턴할 수 있는 함수를 '고차함수' 라고 한다.

2. 고차함수

위에서 이야기했듯 고차함수는 다른 함수를 전달인자로 받을 수 있고 함수를 리턴할 수 있는 함수이다.
예시는 다음과 같다.

// 고차함수는 다른 함수를 전달인자로 받을 수 있는 함수!
function sum(num) {
   return num + 2;
 }  
function sumNum(func, num) {
   return func(num);
 }

let output = sumNum (sum, 4); // 함수 sum을 전달인자로 받는 고차함수 sumNum
console.log(output); // 6 (4+2=6)

//고차함수는 함수를 리턴할 수 있는 함수!
function doubleSum(added) {
  return function(num) { // 자신의 결과로 함수를 리턴하는 고차함수 doubleNum
    return num + added; 
  };
}

let output = doubleSum(8)(9); 
console.log(output); // 17 (8+9=17);

위의 예시의 함수 sum과 같이 전달인자로서 다른 함수에 전달되는 함수를 콜백 함수(callback function)이라고 한다. 콜백함수를 인자로서 전달받은 고차함수는 함수 내에서 콜백함수를 호출하거나 조건에 따라 실행여부를 결정할 수도 있다.

또 위의 예시의 함수 doubleSum 처럼 함수를 리턴하는 함수를 커링 함수라고 한다. 나는 '함수를 리턴하는 함수' 라는 용어 설명을 보자마자 클로저가 바로 떠올랐는데 커링함수와 클로저는 거의 같다고 볼 수 있는 개념이라고 한다.

0개의 댓글