자바스크립트의 일급 객체 ---> 함수
콜백 함수(callback function) : 다른 함수(caller)의 전달인자(argument)로 전달되는 함수
--> 콜백 함수를 전달받은 고차 함수는, 함수 내부에서 이 콜백 함수를 호출할 수 있고, 조건에 따라 콜백 함수의 실행 여부를 결정할 수도 있다!
커링 함수 : 함수를 리턴하는 함수 (클로저와 비슷)
함수를 인자로 받고 함수를 리턴하는 함수 예시
function double(num) {
return num * 2;
}
function doubleAdder(added, func) {
const doubled = func(added);
return function (num) {
return num + doubled;
};
}
/*
* 함수 doubleAdder는 고차 함수
* 함수 doubleAdder의 인자 func는 함수 doubleAdder의 콜백 함수
* 함수 double은 함수 doubleAdder의 콜백으로 전달
*/
// doubleAdder(5, double)는 함수이므로 함수 호출 기호 '()'를 사용
doubleAdder(5, double)(3); // -> 13
// doubleAdder가 리턴하는 함수를 변수에 저장 가능 (일급 객체)
const addTwice3 = doubleAdder(3, double);
addTwice3(2); // --> 8
- JavaScript에 기본적으로 내장된 고차 함수 중에서 배열 메서드들 일부가 대표적인 고차 함수에 해당
- 이 메서드들은 새로운 배열을 만들며, 기존 배열을 변경하지 않는다
- 함수를 인자로 받기 때문에
고차함수
!
시작값
을 정할수 있음. 정하지 않으면 배열의 첫 번째 요소
가 시작값이 됨acc: 누적값
cur: 현재값
HOFs: High Order Functions
추상화 : 복잡한 어떤 것을 압축해서 핵심만 추출한 상태로 만드는 것,
--> 생산성(productivity)의 향상
함수 또한 추상화다!💡
고차 함수 : 함수를 전달받거나 함수를 리턴한다 => 사고(함수)에 대한 복잡한 로직은 감추어져 있다 => 사고 수준에서의 추상화
고차함수는 함수보다 더 높은 차원의 추상화 수준이다~~