고차함수

햄은 개발 공부중·2023년 1월 12일
0
post-thumbnail

학습 목표

  • 일급 객체(first-class citizen)의 세 가지 특징을 설명할 수 있다.
  • 고차 함수(higher-order function)에 대해 설명할 수 있다.
  • 고차 함수를 자바스크립트로 작성할 수 있다.

✏️ 일급객체란?

일급객체(First-class Object)란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다.

  1. 변수에 할당 할 수 있다
    const a = function (el) {
     return el * el; 
    }```
    
  2. 다른 함수를 인자로 전달 받기가 가능하다 (콜백함수!)
    function num(el){
    return el + el;
    };
    function newNum(func, el1) {
    return func(el1);
    }
    let result = newNum(num, 3); // 6
    
    
  3. 다른 함수의 결과로 리턴 가능하다
    function add(num1){
    return function (num){
      return num1 * num2;
    }
    }
    add(2)(3); // 6
    

✏️ 고차함수란?

고차함수란 함수를 전달인자(agurement)나 매개변수(parameter)로 받거나 함수를 리턴하는 함수를뜻한다.

  1. 다른 함수를 인자로 받는 경우
function double(num){
  return num * 2;
}
function doubleNum(func, num) {
  return func(num);
}
let result = doubleNum(double, 9); // 18
  • 함수 doubleNum은 다른 함수를 인자로 받는 고차함수
  • 함수 doubleNum의 첫번째 인자 func에 함수가 올 경우 함수 func는 함수 doubleNum의 콜백함수
  • 함수 double은 함수 doubleNum의 콜백함수
  1. 함수를 리턴하는 경우
function adder(added) {
  return function (num) {
    return num + added;
  };
}
// adder(5)는 함수기 때문에 '()' 사용 가능
let output = adder(5)(3); // -> 8
console.log(output); // -> 8
// adder가 리턴하는 함수를 변수에 저장 가능 (일급객체니까!)
const add3 = adder(3);
output = add3(2);
console.log(output); // -> 5
  • 함수 adder는 다른 함수를 리턴하는 고차 함수
  • adder는 인자 한 개를 입력받아서 함수(익명 함수)를 리턴
  • 리턴되는 익명 함수는 인자 한 개를 받아서 added와 더한 값을 리턴
  1. 함수를 인자로 받고, 함수를 리턴하는 경우
function double(num) {
  return num * 2;
}

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

// doubleAdder(5, double)는 함수이므로 함수 호출 기호 '()'를 사용가능
doubleAdder(5, double)(3); // -> 13

// doubleAdder가 리턴하는 함수를 변수에 저장할 수 있습니다. (일급 객체)
const addTwice3 = doubleAdder(3, double);
addTwice3(2); // --> 8
  • 함수 doubleAdder는 고차 함수
  • 함수 doubleAdder의 인자 func는 함수 doubleAdder의 콜백 함수
  • 함수 double은 함수 doubleAdder의 콜백으로 전달된다

✏️ 배열 내장 메서드

  1. filter( )

    배열 각 요소에 대하여 주어진 함수의 결괏값이 true인 요소를 모아 새로운 배열을 반환하는 메서드이며 오직 boolean타입만 반환한다 (조건에 맞는 데이터 분류할 때 사용)

  2. map( )

    모든 요소에게 동일한 행동을 그로 인해 나온 값을 새로운 배열로 반환하는 메서드이다 (하나의 데이터를 다른 데이터로 매핑할때 사용)

  3. reduce( )

    배열 각 요소에 대하여 reducer 함수를 실행하고 하나의 값으로 반환하는 메서드이며 여러 데이터를 하나로 응축할 때 사용한다 (평균값 구할 때 사용)

    🤔 초기값을 설정하지 않으면 배열의 첫번째 값이 초기값으로 설정!

profile
내가 보려고 정리하는 블로그🔥

0개의 댓글