# 배열 리터럴

배열은 해당 항목의 오프셋을 계산할 수 있는 정수를 통해 각 항목들을 접근할 수 있는 연속적인 메모리 할당입니다. 일반적으로 배열은 매우 빠른 데이터 구조 입니다. 하지만 자바스크립트의 배열은 이와 방식이 조금 다릅니다.

대신에 자바스크립트는 배열 같은 특성을 지닌 객체를 제공합니다. 자바스크립트는 배열 첨자를 문자열로 변환하여 속성을 만듭니다. 이는 실제 배열보다 느리지만 사용하는데는 더 편리합니다. 속성들을 읽거나 갱신하는 작업은 정수형 이름을 가진 속성에 좀 특별한 트릭이 있다는 것을 제외하고는 일반 객체외 똑같습니다.

배열 리터럴은 새로운 배열을 만드는데 매우 편리한 표기법으로 값이 없거나 하나 이상의 값을 쉼표로 구분하여 대괄호로 묶은 것입니다. 배열의 첫 번째 속성값은 0 입니다. 두 번째는 1, 세 번째는 2 이런식으로 배열 요소를 읽을 수 있습니다.

let empty = [];
let numbers = [
  'zero',
  'one',
  'two',
  'three',
  'four',
  'five',
  'six',
  'seven',
  'eight',
  'nine',
];

console.log(empty[1]); // undefined
console.log(number[1]); // one

다음은 유사한 결과를 보여주는 객체 리터럴 입니다.

let number_object = {
  0: 'zero',
  1: 'one',
  2: 'two',
  3: 'three',
  4: 'four',
  5: 'five',
  6: 'six',
  7: 'seven',
  8: 'eight',
  9: 'nine',
};

numbernumber_object 모두 10개의 속성을 가졌고 각 속성은 모두 같은 이름과 같은 값이 있습니다. 하지만 두 객체의 근본적인 차이점이 있는데 numberArray.prototype을 상속했고 number_objectObject.prototype을 상속 했다는 점입니다. 그렇기 때문에 각각이 가지는 속성이 다를 수 있습니다.