부트캠프

고차함수

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