하얀 코딩

[JavaScript - 15] 일급 객체 (함수) 본문

JavaScript

[JavaScript - 15] 일급 객체 (함수)

whitecoding 2023. 1. 11. 19:16

일급 객체(first-class citizen)

일급객체(First-class Object)란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다.

 

그중에서 함수는 함수를 다른 변수와 동일하게 다루는 언어는 일급 함수를 가졌다고 표현합니다.

예를 들어, 일급 함수를 가진 언어에서는 함수를 다른 함수에 인수로 제공하거나,

함수가 함수를 반환할 수 있으며, 변수에도 할당할 수 있습니다.

 

이 글에서는 함수를 중점으로 다루어 보도록 하겠습니다.


일급 객체의 조건

1. 변수에 할당(assignment)할 수 있다.
2. 다른 함수를 인자(argument)로 전달 받는다.
3. 다른 함수의 결과로서 리턴될 수 있다.

함수는 1,2,3번 모든 내용을 포함하기에 일급 객체에 해당됩니다.

 

1. 변수에 할당 할 수 있다.

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

 

2. 다른 함수를 인자(argument)로 전달 받는다. (콜백 함수)

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

3. 다른 함수의 결과로서 리턴될 수 있다.

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