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
function funcGocha(adder) {
return function (num) {
return num - adder;
}
}
funcGocha(7)(3) // -4
배열의 메서드들 중 내장된 고차 함수의 성질을 지니고 있다.
메서드 종류는 forEach
find
map
reduce
filter
sort
등 다양하다.
사용 빈도가 아주 높은 map
reduce
filter
3가지를 중점으로 설명 하겠다.
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
은 배열 요소 전체를 함수 호출하여, 함수 본문에 대한 조건으로
함수 호출 결과를 배열 형태로 반환한다.
기존의 배열에는 영향을 주지 않는다.
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
는 배열 요소 중 조건에 맞는 배열 요소를 판별하여 배열 형태로 반환한다.
기존의 배열에는 영향을 주지 않는다.
let num = [1, 2, 3];
let result = num.reduce(
function(x, y) {
return x + y;
})
result // 6
let num = [1, 2, 3];
let result = num.reduce(
function(x, y) {
return x + y;
}, 4) // <---- 4는 초기값
result // 10
reduce
배열 요소 전체를 각각 함수 조건에 따라 도출되어 배열 요소의 값을 반환한다.
reduce
의 초기값을 선언하지 않을시 배열 첫번째 요소가 초기값으로 선언되니,
주의하도록 하자.
고차 함수의 특징에 대해 알아보았으며, 고차 함수가 내장된 메서드 또한 배웠다.
여기서 메서드를 보면 반복문 for
while
가 비슷하게
모든 요소를 순회하는 성질을 갖고 있다.
반복문과 달리 간단히 몇 줄로 더 편한게 구성할 수 있으므로,
코드를 간편화하기 위해서는 메서드를 활용해볼 것을 추천한다.