고차 함수(higher-order function)는 다른 함수를 인자로 받거나 함수를 결과로 반환하는 함수를 말합니다. 이러한 함수들은 추상화 수준을 높여 주어 더 유연하고 재사용 가능한 코드를 작성할 수 있도록 도와줍니다. 고차 함수는 함수형 프로그래밍 언어에서 매우 중요한 개념입니다.
map([1, 2, 3], x => x * 2)는 [2, 4, 6]을 반환합니다.filter([1, 2, 3, 4], x => x % 2 === 0)는 [2, 4]를 반환합니다.reduce([1, 2, 3, 4], (acc, x) => acc + x, 0)는 10을 반환합니다.고차 함수(higher-order function)에서 괄호 ()는 함수(function)를 호출하는 용도로 사용됩니다. 함수를 인자로 받거나 함수를 반환할 때, 함수 이름 뒤에 붙는 괄호가 바로 그 함수를 실행하라는 의미입니다.
map 함수는 인자로 받은 함수를 배열의 각 요소에 적용할 때 괄호를 사용해 호출합니다.function createGreeter(greeting) {
return function(name) {
return greeting + ', ' + name + '!';
};
}
// createGreeter는 고차 함수입니다. "Hello"를 인자로 넘겨 함수를 생성하고 그 함수를 반환합니다.
const greeter = createGreeter("Hello");
// 반환된 함수를 호출하기 위해 괄호를 사용합니다. 이 때, "World"가 name 파라미터로 넘어갑니다.
console.log(greeter("World")); // 출력: Hello, World!
위의 예에서 createGreeter 함수는 고차 함수입니다. createGreeter 함수는 인자로 문자열을 받고, 그 문자열을 사용해 새로운 함수를 반환합니다. 반환된 함수는 name을 인자로 받고, 인사말을 구성해 반환합니다. 이 때, 반환된 함수를 호출하기 위해 괄호 ()를 사용합니다.