고차 함수와 고차 함수가 내장된 메서드

JINSUNG LEE·2021년 5월 1일
0
post-thumbnail



Javascript에는 함수의 기능을 통해 색다르게 활용할 수가 있다.

그중 가장 대표적인 함수형 프로그래밍 기법인

고차 함수에 대해서 소개하고자 한다.




고차 함수

고차 함수란?

함수를 인자로 받는 함수, 또한 함수를 반환하는 함수

// 함수를 인자로 받는 함수
function funcOne(funcTwo) {
	funcTwo()
}

// 함수를 반환하는 함수
function funcOne() {

	return funcTwo() {
    
	};
}

이를 고차 함수라고 부른다.

여기서 다른 함수의 인자로 이동하는 함수를 콜백 함수(callback function)라고 부른다.

그럼 예시의 경우를 코드로 알아보자

다른 함수를 인자로 받는 경우


function funcCallback(num) {
	return num * 5;
}

function funcGocha(func, x) {
	return func(x)
}

funcGocha(funcCallback, 5)	// 25
  1. 함수 funcGocha는 다른 함수를 인자로 받는 고차 함수이다.
  2. 함수 funcGocha의 매개변수 func는 콜백함수 funcCallback 이다.

함수를 리턴하는 경우


function funcGocha(adder) {
	return function (num) 	{
      return num - adder;
	}
}

funcGocha(7)(3) // -4
  1. funcGocha는 다른 함수를 반환하는 고차 함수이다.
  2. funcGocha는 인자를 입력받아 익명 함수에(클로저 함수) 리턴한다.
  3. adder 매개변수는 익명 함수에(클로저 함수) 이동한다.
  4. 익명 함수의 매개 변수와 adder 변수의 합을 리턴한다.

내장된 고차 함수

배열의 메서드들 중 내장된 고차 함수의 성질을 지니고 있다.

메서드 종류는 forEach find map reduce filter sort 등 다양하다.

사용 빈도가 아주 높은 map reduce filter 3가지를 중점으로 설명 하겠다.

map()


let AmericaCity = ["LA", "New York", "Sanfrancisco"];

let AmericaTrip = 
    AmericaCity.map(function(item) {
	return "I Love " + item
})

AmericaTrip 
// ["I Love LA", "I Love New York", "I Love Sanfrancisco"]

AmericaCity
// ["LA", "New York", "Sanfrancisco"]

map은 배열 요소 전체를 함수 호출하여, 함수 본문에 대한 조건으로

함수 호출 결과를 배열 형태로 반환한다.

기존의 배열에는 영향을 주지 않는다.

filter

let AmericaCity = ["Chicago", "New York", "Las Vegas", "Miami", "LA" ];

let California = AmericaCity.filter( (item) =>	{
	return item === "LA";
})

California // ["LA"]

AmericaCity // ["Chicago", "New York", "Las Vegas", "Miami", "LA"]

filter는 배열 요소 중 조건에 맞는 배열 요소를 판별하여 배열 형태로 반환한다.

기존의 배열에는 영향을 주지 않는다.

reduce

  1. 초기값 선언 안 할 경우

let num = [1, 2, 3];

let result = num.reduce(
	function(x, y) {
	return x + y;
    
})

result // 6
  1. 초기값 선언할 경우

let num = [1, 2, 3];

let result = num.reduce(
	function(x, y) {
	return x + y;
    
}, 4) // <---- 4는 초기값

result // 10

reduce 배열 요소 전체를 각각 함수 조건에 따라 도출되어 배열 요소의 값을 반환한다.

reduce 의 초기값을 선언하지 않을시 배열 첫번째 요소가 초기값으로 선언되니,

주의하도록 하자.




고차 함수의 특징에 대해 알아보았으며, 고차 함수가 내장된 메서드 또한 배웠다.

여기서 메서드를 보면 반복문 for while 가 비슷하게

모든 요소를 순회하는 성질을 갖고 있다.

반복문과 달리 간단히 몇 줄로 더 편한게 구성할 수 있으므로,

코드를 간편화하기 위해서는 메서드를 활용해볼 것을 추천한다.

profile
https://californialuv.github.io/Tech_Blog 이사 갔어용 🌎 🚀

0개의 댓글