부트캠프
고차함수
mimi-latte
2022. 5. 24. 09:37
일급 객체
대표적인 예시 : 함수
변수에 할당(assignment)할 수 있다
함수를 변수에 할당할 수 있기 때문에 함수를 배열의 요소나 객체의 속성값으로 저장할 수 있다.
함수를 데이터(string, number, boolean, array, object)처럼 다룰 수 있다.
다른 함수의 전달인자(argument)로 전달될 수 있다
다른 함수의 결과로서 리턴될 수 있다.
고차함수의 이해
함수를 전달인자(argument)로 받을 수 있고, 함수를 리턴할 수 있는 함수
콜백 함수 : 다른 함수(caller)의 전달인자(argument)로 전달되는 함수
어떤 작업이 완료되었을 때 호출하는 경우가 많아서, 답신 전화를 뜻하는 콜백 함수라는 이름이 붙여졌다.
커링 함수 : 함수를 리턴하는 함수
고차 함수가 커링 함수를 포함한다.
예시) 다른 함수를 인자로 받는 경우
function greet(str) {
return `Hello, ${str}!`;
}
function greetStr(func, str) {
return func(str);
}
let output = greetStr(greet, "mike");
console.log(output);
// 'Hello, mike!'
예시) 함수를 리턴하는 경우
function doubleNum(num1) {
return function(num2) {
return num1 * num2;
}
}
// 함수 doubleNum은 다른 함수를 리턴하는 고차 함수
// doubleNum은 인자 1개를 입력 받아서 함수를 리턴한다
// 리턴하는 익명 함수는 인자 1개를 받아서 num1과 곱한 값을 리턴한다.
let output = doubleNum(3)(3);
console.log(output); // 9
const num = doubleNum(5);
output = num(5);
console.log(output); // 25