일급객체

박진선·2024년 10월 22일
0

'일급' 이란 뜻은 일급 시민 처럼 무슨 혜택을 받는 다는 뜻이 아니라, 사용할 때 다른 요소들과 아무런 차별이 없다는 것을 뜻한다.

그리고 보통 일급 객체를 아래 3가지 조건을 충족한 객체를 일컫는다.

  • 모든 일급 객체는 변수나 자료구조(객체, 배열 등)에 담을 수 있어야 한다.
  • 모든 일급 객체는 함수의 파라미터로 전달 할 수 있어야 한다.
  • 모든 일급 객체는 함수의 리턴값으로 사용 할수 있어야 한다.

자바스크립트의 함수는 위의 조건을 만족하기에 일급 객체가 되고 '일급 함수' 란 함수를 일급 객체로 취급하는 것을 일컫는다.
함수가 일급 객체라는 것은 함수를 객체와 동일하게 사용할 수 있다는 의미이고 객체는 값이므로 이는 결국 함수를 값과 동일하게 취급할 수 있다는 말이 된다.
간단히 말해, "함수"라는 대상이 "값"으로서 사용될 수 있다고 생각하면 된다.

// 1. 함수는 무명의 리터럴로 생성할 수 있다.
// 2. 함수는 변수에 저장할 수 있다.
const add = function (num1, num2) {
    return num1 + num2;
}
 
// 2. 함수는 객체에 저장할 수 있다.
const calculator = { add }

// 3. 함수의 매개변수에 전달할 수 있다.
function sayHello() {
    return "Hello, ";
}
 
function greeting(message, name) {
    console.log(message() + name);
}
 
// `sayHello`를 전달인자로 `greeting` 함수에 전달
greeting(sayHello, "JavaScript!"); // Hello, JavaScript!


// 4. 함수 반환
function helloWorld() {
    return () => {
        console.log("Hello, world!");
    }
}
profile
주니어 개발자 입니다
post-custom-banner

0개의 댓글