[JS] 고차함수

Chaewon·2023년 1월 12일
0

Section 2

목록 보기
1/3

일급객체

JavaScript에서 특별한 대우를 받는 객체. 대표적으로 함수가 있다.

  • 변수에 할당(assignment)가능
    ( = 배열의 요소나 객체의 속성값으로 저장할 수 있다.)
  • 다름 함수의 전달인자(argument)로 전달 가능
  • 다름 함수의 결과로 리턴 가능

고차 함수(higher order function)

  • 변수에 저장할 수 있는 함수
  • 함수를 전달인자(argument)로 받을 수 있는 함수.
  • 함수를 리턴할 수 있는 함수

고차 함수 종류

콜백 함수(callback function)

다른 고차 함수의 전달인자로 전달되는 함수

function double(num) {
  return num * 2;
}

function doubleNum(func, num)  // 다른 함수를 인자로 받는 고차함수
  return func(num) // func(double) : doubleNum의 콜백함수

커링 함수

함수를 리턴하는 함수

function adder(added) { // 다른 함수를 리턴하는 고차함수
  return function(num) { // 익명함수 리턴
    return num + added;
  };
}

let output = adder(5)(4); // 8  (added = 5, num = 4)

const add3 = adder(3); // (added = 3)
output = add3(2) // 5 (num = 2)

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

function double(num){ // doubleAdder의 콜백함수
  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

내장 고차 함수

filter

모든 배열의 요소 중 특정 조건을 만족하는 요소를 필터링


// # filter ex 1
const isEven = function (num) { // 배열의 요소를 받아서 함수 실행
  return num % 2 === 0; // true값만 리턴
}
[1,2,3,4].filter(isEven); // [2,4]

// # filter ex 2
return [1,2,3,4].filter(e => e % 2 === 0); // [2, 4]

map

모든 배열의 요소에 동일한 행동을 준 값에 대해 반환

return [1,2,3].map(e => e * 2)

reduce

배열을 하나의 값으로 만들어줌
초기값 정할 수 있음(정해지지 않았다면 배열의 제일 처음 요소가 초기값, 그 다음값이 현재값)
배열의 각 요소를 특정방법에 따라 원하는 하나의 형태로 응축한다.

return [1,2,3].reduce((acc, cur, idx) => {
  console.log('index : ' + idx)
  return acc + cur
});

// acc = 0, cur = 1, index = 0, return 1
// acc = 1, cur = 2, index = 1, return 3
// acc = 3, cur = 3, index = 2, return 6

// 직전의 return값은 다음의 acc(누적값)이 된다. 
// 최종 return값은 마지막 return 값
// idx는 cur 요소의 인덱스값
profile
가보자고💪

0개의 댓글

관련 채용 정보