• Home
  • About
    • 김연중 개발 블로그 🚀 photo

      김연중 개발 블로그 🚀

      개발과 나의 생각들

    • Learn More
    • Email
    • Github
  • Posts
    • All Posts
    • All Tags
  • 개발일기
  • 나의 생각
  • C#
  • ASP.net
  • DataBase
  • CS지식
  • 성장일기
  • JavaScript

[CS지식] 일급객체(first-class object)

2022-08-14 19:00:37

Reading time ~1 minute

📌 일급객체란 무엇인가?


일급객체에 대해 알아보자!



주제: 일급객체(first-class object)

일급객체란?

컴퓨터 프로그래밍 언어 디자인에서, 일급 객체(영어: first-class object)란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다. 보통 함수에 인자로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원할 때 일급 객체라고 한다. - by 위키백과.

참고로 일급객체의 자격을 가진 함수를 일급함수라고 한다.
이제 일반적으로 적용 가능한 연산에 대해 자세히 알아보자.

  • 변수에 할당할 수 있다.
  • 함수가 인자로 다른 함수를 받을 수 있다.
  • 함수를 반환값으로 반환할 수 있다.
  • 런타임에 함수 생성이 가능하다. (리터럴로 생성이 가능하다)

위와 같은 조건들을 기준으로 일급객체로 정의할 수 있다.



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


const mySumFunc = function (num1, num2){
    return num1+num2;
}

JS의 함수표현식의 경우이다.
mySumFunc라는 변수 내에 함수를 할당하였다.


2. 함수가 인자로 다른 함수를 받을 수 있다.

function sum(num1, num2){
    return num1+num2;
}
function funcDouble(func, num1, num2){
    let funcResult;
    num1 *= 2;
    num2 *= 2;
    funcResult = func(num1, num2);
    return funcResult;
}

let result = funcDouble(sum, 5, 3);

// result: 16

funcDouble 함수를 살펴보면, 파라미터로 받은 함수를 활용하여 연산을 하는 것을 확인할 수 있다.
일급객체는 이처럼 함수를 인자로서 받을 수 있다.


3. 함수를 반환값으로 반환할 수 있다.

function sum(num1, num2){
    return num1+num2;
}
function funcDouble(func, num1, num2){
    num1 *= 2;
    num2 *= 2;
    return func(num1, num2)
}

let result = funcDouble(sum, 5, 3);

// result: 16

위와 비슷한 예제지만, 해당 예제에서는 return에 함수 자체를 던진다.
일급객체는 이처럼 함수를 반환값으로 던질 수 있다.


그래서 뭐?

일급 객체는 고차함수와 콜백함수를 만들 수 있다.

고차함수: 함수를 전달인자(argument) 또는 매개변수(parameter)로 받거나 함수를 리턴하는 함수. 콜백함수: 다른 함수의 인자로써 넘겨진 후 특정 이벤트에 의해 호출되는 함수.





출처

https://ko.wikipedia.org/wiki/%EC%9D%BC%EA%B8%89_%EA%B0%9D%EC%B2%B4
https://www.hanumoka.net/2017/08/31/javascript-20170831-javascript-first-object/



Share Tweet +1