티스토리 뷰

Oops, All Code!/📝 Study Notes

[JS] 일급 객체

밍동망동 2023. 3. 13. 00:00

다음의 항목을 만족하는 객체를 일급 객체라 한다.

  조건
1 무명의 리터럴로 생성할 수 있다. 
런타임 생성이 가능하다는 의미다.
2 변수나 자료구조(객체, 배열 등)에 저장할 수 있다.
3 함수의 매개변수에 전달할 수 있다.
4 함수의 반환값으로 사용할 수 있다.

자바스크립트의 함수는 모두 만족하기 때문에 일급 객체다.

// 1. 무명의 리터럴로 생성할 수 있다.
// 2. 변수에 저장할 수 있다.
const plus = function(a, b) {
  return a+b;
};

const minus = function(a, b) {
  return a-b;
};

// 2. 객체에 저장할 수 있다.
const operator = { plus, minus }   

// 3. 함수의 매개변수에 전달할 수 있다.
// 4. 함수의 반환값으로 사용할 수 있다.
function makeCalculator(operator) {
  let num = 0;
  
  return function() {
    num = operator(num);
    return num;
  };
}

이는 함수를 객체와 동일하게 사용할 수 있다는 의미다.

객체는 값이기 때문에 함수 역시 값과 동일한 취급을 할 수 있다.

 

따라서 함수는 값을 사용할 수 있는 모든 곳에 리터럴로 정의할 수 있으며,

런타임에 함수 객체로서 평가된다.

 

이 중 가장 큰 특징은 함수의 매개변수에 전달할 수 있으며, 반환값으로도 사용된다는 것이다.

이로인해 자바스크립트는 함수형 프로그래밍이 가능하다.

댓글