모든 프로그래밍 언어에서 제공하는 자료구조.
일반적으로 int arr[10] = {1,2,3,4,5}; 라는 배열을 지정했을 경우,
운영체제는 메모리에서 숫자 10개가 들어갈 수 있는 빈 공간을 찾아서 순서대로 값을 할당한다. 값이 할당되지 않은 빈 공간에는 쓰레기 값이 저장된다.
운영체제는 첫번째 값이 들어간 배열의 시작주소만 기억하는데, 프로그래머가 배열의 세 번째 원소에 접근하고 싶다면 arr[2] 와 같이 인덱스를 이용해 한 번에 접근한다.
배열의 길이와 상관없이 한 번에 가져오기 때문에 O(1) 의 성능을 갖는다.
때문에 배열은 읽기/쓰기, 즉 참조에서 좋은 성능을 보인다.
그러나 데이터의 삽입, 삭제 성능은 좋지 않음.
예를 들어, 프로그래머가 길이가 10인 배열을 생성한 뒤, 이 배열의 길이를 15로 늘리고 싶다면 운영체제는 길이가 15인 배열이 들어갈 수 있는 빈 공간을 다시 탐색하고, 또한 기존의 배열에 저장되어 있던 값을 복사해야 함.
자바스크립트의 경우 초기 배열 생성 당시 길이를 지정하지 않는다.
자바스크립트에서 배열은 상황에 따라서 연속적, 불연속적으로 메모리를 할당하지만, 대부분은 불연속적으로 할당한다. 이를 내부적으로 연결해 사용자에게는 배열인 것 처럼 보이는 것.