자바스크립트 배열은 미리 크기를 정하지 않고 선언할 수 있으며, 어떤 타입의 값도 넣을 수 있다.

const arr = [];

arr.length;  // 0

arr[0] = 1;
arr[1] = "str";
arr[2] = [1,2,3];

arr.length;  // 3

 

만약 다음과 같이 중간을 건너뛰어 빈 구멍이 생긴다면

구멍의 값은 undefined가 될 것 같지만, 명시적으로 undefined를 세팅한 것과 같지 않으므로 주의한다.

const arr = [];

arr[0] = 1;
// arr[1]을 건너뜀
arr[2] = undefined;

arr[1]  // undefined
arr;  // [1, empty, undefined]

 

앞서 포스팅에서 언급했다시피 배열은 객체이다.

객체이기 때문에 배열에도 키/프로퍼티 문자열을 추가할 수 있지만, 주의해야할 점이 몇가지 있다.

 

첫번째는 문자열 키를 추가하면 배열의 length는 증가하지 않는다는 점이다.

const arr = [];

arr[0] = 1;
arr["idx"] = 2;

arr;  // [1, "idx": 2]

arr.length;  // 1
arr["idx"];  // 2
arr.idx;  // 2

 

두번째는 키로 넣은 문자열이 표준 10진수 숫자로 타입 변환이 되면,

마치 문자열 키가 아닌 숫자 키를 사용한 것과 같은 결과가 된다는 점이다.

const arr = [];
arr["13"] = 13;

arr.length;  // 14

 

따라서 배열에 문자열 타입의 키/프로퍼티를 사용하는 것은 추천하지 않는다.

문자열 타입의 키/프로퍼티를 사용해야한다면 객체를 사용하는 것을 추천한다.

 

https://github.com/getify/You-Dont-Know-JS/

 

getify/You-Dont-Know-JS

A book series on JavaScript. @YDKJS on twitter. Contribute to getify/You-Dont-Know-JS development by creating an account on GitHub.

github.com

'Javascript' 카테고리의 다른 글

자바스크립트 문자열  (0) 2019.12.29
선언되지 않은 변수  (0) 2019.12.14
자바스크립트 내장 타입  (0) 2019.12.14

+ Recent posts