First-class Function

2019년에 Hexo 블로그에 쓴 글을 옮겨 왔습니다. 당시 이해를 그대로 두었습니다.

First-class Function

  • 프로그래밍 언어 중 함수를 다른 변수와 동일하게 다루는 언어를 함수우선순위(First-class Functions) 가졌다고 표현한다.
  • 함수를 다른 함수의 argument로 사용하고, 함수에서 함수를 return하거나 변수의 값으로 함수를 할당할 수 있다.
  1. 변수에 함수를 할당

    const foo = function() {
        console.log("foobar");
    }
    // 변수를 사용하여 호출
    foo();
  2. 함수를 인자로 전달

    function sayHello() {
        return "Hello, ";
    }
    function greeting(helloMessage, name) {
      console.log(helloMessage() + name);
    }
    // `sayHello`를 `greeting` 함수에 인자로 전달
    greeting(sayHello, "JavaScript!");
  • 다른 함수에 인자로 전달된 함수를 Call Back 함수라고 한다.
  • 다른 언어들과 같이 sayHello()를 호출하면 바로 실행되지만, 위와 같이 greeting(satHello, “)의 인자로 전달된 sayHello의 경우 greeting 함수의 helloMessage parameter로 전달된 후에, 필요한 경우 helloMessage()에서 호출된다.
  • 전달된 이후 나중에 호출되기 때문에 CallBack 함수라고 불린다.
  1. 함수를 return 값으로 전달 (함수 return)

    function sayHello() {
        return function() {
          console.log("Hello!");
        }
    }
    • 함수가 함수를 반환하는 예시문. JavaScript에서는 함수를 변수처럼 취급하므로 함수를 return할 수 있다.
    • Higher-Order Function : 함수를 반환하는 함수