자바스크립트 핵심컨샙33 #22. High Order Functions(고차 함수)
고차 함수(High Order Functions)란 함수를 인자로 전달받거나 함수를 리턴하는 함수를 말한다. 여기서 생각나는게 전에 포스팅했던 '클로저'함수와 'map, filter, reduce' 함수들이 고차함수로 통한다. (여기서 인자로 전달되어 실행되는 함수를 '콜백'함수라고 한다.)
인자로 전달하고 함수의 값으로 리턴받고 변수에 담을 수 있는 이유는 자바스크립트의 함수는 일급 객체(First class object)로 취급하기때문이다.
🤩여기서 일급객체란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다.
1. 무명의 리터럴로 표현 가능 : const func = (x) => 1 + x
2. 변수나 자료 구조(객체, 배열 등)에 저장할 수 있음 : const obj = [func]
3. 함수의 매개변수에 전달 가능 : let func2 = (func) => func + 2
4. 반환값으로 사용 가능 : let func3 = () => return function(){alert("Hi")}
//클로저 형성, 순수함수면서 고차함수
function makeCounter(predicate) {
let num = 0;
return function () {
num = predicate(num);
return num;
};
}
function increase(n) {
return ++n;
}
function decrease(n) {
return --n;
}
const increaser = makeCounter(increase);
console.log(increaser()); // 1
console.log(increaser()); // 2
const decreaser = makeCounter(decrease);
console.log(decreaser()); // -1
console.log(decreaser()); // -2
여기까지 읽으면 전 포스팅(클로저, map, filter, reduce, 순수함수 등등)과 겹치는 부분이 많다. 전 포스팅의 함수들이 모두 고차함수였던 것이였다!
Author And Source
이 문제에 관하여(자바스크립트 핵심컨샙33 #22. High Order Functions(고차 함수)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@404/자바스크립트-핵심컨샙33-22.-High-Order-Functions고차-함수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)