학습 목표
- 일급 객체(first-class citizen)의 세 가지 특징을 설명할 수 있다.
- 고차 함수(higher-order function)에 대해 설명할 수 있다.
- 고차 함수를 자바스크립트로 작성할 수 있다.
함수를 매개변수(전달인자:argument)로 받거나, 함수를 반환하는 함수
콜백함수(callback function)
커링 함수
// 다른 함수를 인자로 받는 경우 예제
function add(a, b) {
return a + b;
}
function calculate(a, b, operation) {
const result = operation(a, b);
console.log(result);
}
// 두 개의 숫자와 다른 함수를 인자로 받음
// 인자로 받은 operation 함수를 호출해서 a + b 결과 출력
// add 함수operation이 콜백함수
calculate(5, 3, add); // 8 출력
// 함수를 리턴하는 고차함수 예제
function createMultiplier(multiplier) {
return function(number) {
return number * multiplier;
}
} // 인자로 전달된 multiplier 값을 받아서, 이 값을 사용하는 새로운 함수를 반환
// 반환된 함수는 내부적으로 multiplier 값을 이용해서 전달받은 number 값을 곱한 결과를 반환
const double = createMultiplier(2);
const triple = createMultiplier(3);
console.log(double(5)); // 10
console.log(triple(5)); // 15
// 함수를 인자로 받고, 함수를 리턴하는 예제
function double(func) {
return function(num) {
return func(num * 2);
}
} // double 함수는 함수를 인자로 받으며, num에 2를 곱한 값을 해당 함수에 전달하여 리턴
// double 함수 내부에서는 인자로 전달받은 함수(func)에 해당 값을 전달하여 실행
function square(num) {
return num * num;
} // 인자로 받은 수의 제곱 결과 리턴
const doubleSquare = double(square); // doubleSquare 변수에 double 함수에 square 함수를 인자로 전달하여 리턴받은 함수를 할당
console.log(doubleSquare(5)); // 100
// double 함수 내부에서 square 함수에 5 * 2인 10을 전달하고, square 함수는 이 값을 제곱한 100을 리턴