📒

JS의 배열은 배열이 아니다?

Array를 다시 공부하면서 들었던 의문점
const a = [1, 2, 3]; console.log(typeof a) // object
TypeScript
복사
왜 타입이 object가 뜰까?

JS의 배열은 배열이 아님!

JS의 Array는 일반적인 배열의 동작을 흉내낸 특수한 객체. 희소 배열(sparse array)이다.
인덱스를 나타내는 문자열을 프로퍼티 키로 갖고, 배열의 요소는 value값이며 length 프로퍼티를 갖는 특수한 객체
따라서 각각의 메모리 공간이 동일한 크기를 갖지 않아도 되고, 연속적으로 이어져있지 않아도 됨.
아!! 그래서 배열의 타입을 확인하면 object가 뜨는 것! 배열 타입임을 확인하려면 우리는 isArray() 메서드를 사용해야한다.
일반적인 배열
인덱스로 요소에 빠르게 접근 가능
특정 요소를 검색하거나 삽입 또는 삭제가 효율적이지 않음
그러나 자바스크립트의 배열은 해시 테이블로 구현된 객체이므로 이와 다름
인덱스로 요소에 접근하는 경우 일반 배열보다 성능적으로 느림
특정 요소를 검색하거나 삽입 또는 삭제하는 경우 일반 배열보다 성능적으로 빠름