자바스크립트 닌자 책의 3장에 대해 정리해 볼 예정이다.

함수를 이해하는 것이 왜 중요한가?

1종 객체란 ?

자바스크립트에서 함수는 1종 객체(first-class object)이다. 라는 말을 자주 들어 봤을 것이다. 여기서 말하는 1종 객체란 무엇을 의미하는 걸까?

<1종 객체의 특징>

  1. 리터럴로 생성될 수 있다.
  2. 변수, 배열 엘리먼트, 다른 객체의 프로퍼티에 할당 될 수 있다.
  3. 함수의 인자로 전달 될 수 있다.
  4. 함수의 결과 값으로 반환될 수 있다.
  5. 동적으로 생성된 프로퍼티를 가질 수 있다. (즉, 프로퍼티와 메소드를 가질 수 있다. )

위의 특징에서 약간의 설명이 필요한 부분에 대해 정리하고 넘어 가겠다.

  1. 리터럴로 생성?
let x = 1;
let arr = [];
//위와 같이 변수를 선언함과 동시에 값을 바로 정해 주는 것을 리터럴 방식으로 변수 선언 했다고 한다. 

//그럼 이와 달리 생성하는 방법이 있을까? 아래와 같은 생성자를 이용한 변수선언 방식이 있다. 
let x = new String()
const arr = new Array(3)

자바스크립트의 함수는 위의 1종 객체의 특징을 모두 갖추고 있으므로, 함수는 1종 객체이다.라고 할 수 있다.