함수와 일급 객체

JunseongLee·2023년 10월 17일
0

일급 객체

다음과 같은 조건을 만족하는 객체를 '일급 객체' 라 한다.

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

자바스크립트의 함수는 위의 조건을 모두 만족하므로 일급 객체이다.

// 함수는 무명의 리터럴로 생성할 수 있고, 변수에 저장할 수 있다.
// 런타임에 함수 객체가 생성되고 변수에 할당된다.
const increase = function (num) {
	return ++num;
};

const decrease = function (num) {
	return --num;
};

const funcObj = { increase, decrease };

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

// 함수는 매개변수에게 함수를 전달할 수 있다.
const increaser = makeCounter(funcObj.increase);

const decreaser = makeCounter(funcObj.decrease);
profile
Designer & FrontEnd Developer

0개의 댓글