일급 객체

  1. 무명의 리터럴로 생성할 수 있다.
  2. 변수나 자료구조(객체, 배열 등)에 저장할 수 있다.
/* 1번과 2번 만족 */
var hello = function() {
    return '안녕하세요!';
};

var obj = {hello};

var obj = {
    hello : function() {
        return '안녕하세요!';
    }
}
  1. 함수의 매개변수에 전달할 수 있다.
  2. 함수의 반환값으로 사용할 수 있다.
/* 3번 만족 */
function repeat(func, count) {
    for(var i = 0; i < count; i++){
        console.log(func());
    }

    /* 4번 만족 */
    return function() {
        console.log(`${count}번 반복 완료`);
    }
}

함수는 일급 객체 이므로 함수 리터럴로 생성한 함수 객체를 변수에 할당할 수 있음