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