배열은 객체지만 인덱스와 요소로 이뤄진 독특한 구조

어떤 타입의 값이라도 배열의 요소가 될수 있음

27-2. 자바스크립트 배열은 배열이 아니다?

27-3. 희소 배열

자료구조에서 말하는 배열은 아니고 희소 배열(요소가 연속적으로 갖지 않음)임

자바스크립트 배열은 배열을 흉내낸 특수한 객체임

자바스크립트 배열은 해시 테이블(key,value로 데이터를 저장하는 구조로 빠르게 데이터 검색 가능 , 참고 사이트)로 구현된 객체이기 때문에, 하나 하나의 요소에 접근은 빠르나 삭제/추가가 느림

강의 예제 1

const a = [];
a.length = 10;
a // *[empty X 10]*
a[5]; // undefined
강의 예제 2

new Array(10); // 비어있음 *[empty X 10]

//* 비어있기 때문에 forEach문 실행이 안됨
new Array(10).forEach((v, i) => console.log(v, i)); // undefined

// 하나라도 값을 넣어주면 forEach문 돌릴수 있음
const a = new Array(10);
a[5] = undfined;
a.forEach((v, i) => console.log(v, i)); // undefined, 5

27-4. 배열 생성

  1. 리터럴 생성
const arr = [1,2,3];
  1. Array 생성
const a = new Array(3);

// 인자에 들어간 갯수가 몇개인지, 어떤게 들어가 있는지에 따라 동작이 다름~~
new Array(100); // *[empty X 100] 요소 100개가 비어있는 배열이 됨*
new Array(100,1,2); // [100, 1, 2]
new Array({}); // [{}]