JS 배열 내부 동작: Holey - Hash Table 구현해보기
희소 배열은 어떻게 저장될까?JS의 배열은 V8 엔진에 의해 Packed, Holey로 구분되어 메모리에 저장되게 된다. Packed는 근접한 메모리에 연속성으로 반영되기에 메모리의 순서대로 인덱스를 반영하면 되지만 Holey Array의 경우는 희소배열이기 때문에 떨어져 있는 인덱스 들을 Hash Table을 이용한 참조를 통해 메모리를 효율적으로 사용할 수 있다.실질적으론 Packed 처럼 사용할 수 있는 장점이 있다. 이를 좀 더 이해하기 위해 JS 배열에서 사용하는 Hash Table을 구현해보며 이해하기로 한다.Holey 해시테이블 구현해시테이블은 보통 버킷을 2의 제곱수 크기로 시작한다. 대부분의 라이브러리가 초기값으로 쓰는 8개 버킷을 사용하기에 나도 8로 구현하기로 한다. 각 버킷은 [K,V] 쌍을 담는 배열로, 충돌이 발생하면 동일 버킷 내부 배열에 추가하는 체이닝 방식을 따른다. 따라서 keyMap의 타입은 다음과 같다.private keyMap: Array<Arr