TIL_고차함수

박성훈·2022년 7월 21일

JavaScript

목록 보기
19/25
post-thumbnail

일급객체

특별한 대우를 받는 객체

JavaScript에는 특별한 대우를 받는 일급객체가 있는데, 가장 대표적인 것이 바로 함수이다.

고차함수

특별한 대우를 받는 일급객체인 고차함수는 다음과 같은 특징을 갖는다.

  • 변수에 할당 가능
  • 다른 함수의 전달인자로 사용가능
  • 다른 함수의 결과로서 리턴 가능
function double(num){
	return num * 2;
}

function doubleNum(func, num){
	return func(num);
}

let output = doubleNum(double, 4);

위의 코드처럼 함수를 다른 함수의 전달인자로 사용할 수 있는데, 이 때 전달인자로 들어간 함수를 콜백함수라고 부른다.

filter()

조건에 맞는 데이터만 분류할 때 사용

let arr = [1,2,3,4,5];

return arr.filter((el) => {
	return el % 2 === 0;
})

위의 코드는 arr의 원소 중 짝수인 요소만 따로 모아 새로운 배열로 리턴해준다.
즉, filter의 파라미터로 들어온 함수의 리턴값이 true인 요소만 수집해준다.
이때, filter메소드는 immutable이므로 원본이 수정되지 않고, 새로운 주소값을 같는 배열을 리턴해준다.

map()

각 요소에 대해 연산을 수행한 값으로 바꿔 새로운 배열로 리턴

let arr = [1,2,3,4,5];

return arr.map((el) => {
	return el * 2;
}

map메소드의 파라미터로 받은 함수를 수행했을 때, arr의 각 요소는 2가 곱해진 값이 바뀌게 된다.
그리고 그 바뀐 값을 요소로 갖는 새로운 배열로 리턴해준다.

reduce()

여러 데이터를 하나의 데이터로 응축할 때 사용

let arr = [1,2,3,4,5];

retur arr.reduce((acc, cur){
	return acc + cur;
}, 0);

reduce메소드는 파라미터로 acc(누적값), cur(현재값), 초기값을 갖게 된다.
이때, 만약 초기값이 없다면 첫번째 acc값은 배열의 첫 번째 요소가 된다. (빈 배열일 때, 초기값이 없을 경우 오류 발생)

위의 코드로 예를 들어보면,
첫번째 호출
acc = 0
cur = 1
return 1

두번째 호출
acc = 1 (바로 전 호출의 리턴값)
cur = 2
return = 3

세번째 호출
acc = 3
cur = 3
return = 6

...

이러한 방식으로 진행된다.

추상화

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

우리가 고차함수를 사용해서 특정기능을 고정시켜놓고 파라미터만 다르게 주는 것도 하나의 추상화 기법이다.

let add5 = (num) => {
	return num + 5;
}

add5(3) // 8
profile
프론트엔드 학습일지

0개의 댓글