일급 함수

프로그래밍 언어는 해당 언어의 함수들이 다른 변수처럼 다루어질 때 일급 함수를 가진다고 합니다. 예를 들어, 일급 함수를 가진 언어에서 함수는 다른 함수들에 전달인자로 제공되고, 다른 함수에 의해 반환될 수 있으며, 변수에 값으로서 할당될 수 있습니다.

예제

변수에 함수 할당

js
const foo = () => {
  console.log("foobar");
};
foo(); // 변수를 사용해 호출
// foobar

변수에 '익명함수'를 할당한 다음, 끝에 괄호 ()를 추가하면서 함수를 호출할 해당 변수를 사용합니다.

참고: 함수가 이름을 가지고 있더라도, 변수 이름을 사용하여 함수를 호출할 수 있습니다. 함수에 이름을 지정하는 것은 코드를 디버깅할 때 도움이 됩니다. 하지만 함수를 호출하는 방식에는 영향을 미치지 않을 것입니다.

함수에 인자로 전달

js
function sayHello() {
  return "Hello, ";
}
function greeting(helloMessage, name) {
  console.log(helloMessage() + name);
}
// `sayHello`를 전달인자로 `greeting` 함수에 전달
greeting(sayHello, "JavaScript!");
// Hello, JavaScript!

sayHello() 함수를 greeting() 함수에 전달인자로 전달하는데, 이것은 함수를 값으로서 어떻게 다루는지 설명합니다.

참고: 다른 함수에 전달인자로 전달하는 함수를 콜백 함수라고 합니다. sayHello()는 콜백 함수입니다.

함수 반환

js
function sayHello() {
  return () => {
    console.log("Hello!");
  };
}

이번 예제에서, 다른 함수로부터 함수를 반환합니다. JavaScript에서 함수들은 값들로서 다루어질 수 있기 때문에 함수를 반환할 수 있습니다.

참고: 함수를 반환하거나 다른 함수들을 전달인자로서 사용하는 함수를 "고차 함수"라고 합니다.

같이 보기