자바스크립트 배열은 엄격한 타입언어와 달리 문자열, 숫자, 객체, 다른 배열 등 어떠한 타입의 값도 담을 수 있다.
var a = [1,"2",[3]]
a.length // 3
a[0] // 1
a[2][0] // 3
또한 배열의 크기는 미리 정하지 않고 선언할 수 있으며 원하는 값을 추가할 수 있다.
배열 자체는 하나의 객체여서 키/프로퍼티 문자열을 추가할 수 있다. 하지만 배열 length 가 증가하지는 않는다!
var a = []
a[0] = 1;
a['foo'] = 'bar'
a.length // 1
a['foo'] // 'bar'
a.foo // 'bar'
이때 키로 넣어준 문자열이 표준 10진수 숫자로 형변환이 된다면 문자열 키가 아닌 숫자 키를 사용한것 처럼 변해버린다!
(숫자로 적힌 문자열이 암묵적 형변환을 통해 숫자로 바뀌는 것은 종종 버그의 원인이 된다)
var a = []
a["13"] = 42;
a.length // 14