본문 바로가기
JAVASCRIPT/ES6

[JS] 일급 객체와 일급 함수 (First-class Object & Function)

by melll93 2023. 1. 30.

1. 일급 객체(First-class Object)란?

  • 다른 객체들에 대해 기본적인 연산이 모두 가능한 객체를 가리킨다. 자기 자신을 변수에 대입한다거나 다른 객체의 인자로 넘긴다거나 하는 연산이 가능할 때 일급 객체라고 한다.
  • 기본적으로 일급 객체를 구성하는 요소는 다음과 같은 권리가 있다.
    1. 모든 요소는 함수의 실제 매개변수가 될 수 있다.
    2. 모든 요소는 함수의 반환 값이 될 수 있다.
    3. 모든 요소는 할당 명령문의 대상이 될 수 있다.
    4. 모든 요소는 동일 비교의 대상이 될 수 있다.

 

2. 일급 함수(First-class Function)란?

  • 함수를 다른 변수와 동일하게 다루는 언어는 일급 함수를 가졌다고 표현하는데, JavaScript는 그 대표적인 언어 중 하나이다.
  • 위에서 언급한 일급 객체의 권리를 JavaScript 관점에서 해석해보자.
    1. JavaScript의 함수는 다른 함수의 매개변수가 될 수 있다.
    2. JavaScript의 함수는 다른 함수의 반환 값이 될 수 있다.
    3. JavaScript의 함수는 할당 명령문의 대상이 될 수 있다.
    4. JavaScript의 함수는 동일 비교의 대상이 될 수 있다.
  • MDN에서는 다음과 같이 설명하고 있다.
JavaScript는 함수를 변수에도 할당하거나(1), 다른 함수에 인수로 제공하거나(2), 함수가 함수를 반환할 수 있다(3).

 

일급 함수의 특징을 코드를 통해 알아보자


(1) 함수는 변수에 할당할 수 있다.
const variable = function () {
    console.log("i am function !!!");
}

variable();

 

(2) 함수는 다른 함수에 인수도 제공할 수 있다.
function whoAmI() {
  return "My name is ";
}

function whoAreU(func, myName) {
  console.log(func(), myName);
}

whoIAm(whoAmI, "Seung Hyeon");

 

(3) 함수는 다른 함수를 반환할 수 있다.
function func() {
    return function() {
        console.log("Hello? I'm the anonymous");
    }
}

const variable = func();
variable();

// 여기서 함수를 품은 함수(func)를 '고차 함수',
// 함수에 안긴 함수(익명 함수)를 '콜백 함수'라 한다.




[참조문서]
https://developer.mozilla.org/ko/docs/Glossary/First-class_Function
https://ko.wikipedia.org/wiki/%EC%9D%BC%EA%B8%89_%EA%B0%9D%EC%B2%B4

반응형

'JAVASCRIPT > ES6' 카테고리의 다른 글

[JS] Currying  (0) 2023.02.03
[JS] Spread Syntax (전개 구문, 전개 연산자)  (0) 2023.02.02
[JS] Prototype  (0) 2023.02.01
[JS] JSON (JavaScript Object Notation)  (0) 2023.01.29
[JS] 구조 분해 할당(Destructuring Assignment)  (0) 2023.01.25

댓글