배열은 여러 개의 값을 순차적으로 나열한 자료구조이다. C Family 언어와 유사하게 자바스크립트의 배열도 요소와 인덱스, 길이를 가진다. 그러나 자바스크립트의 배열은 배열이 아니다.
자료구조에서 말하는 배열은 동일한 크기의 메모리 공간이 빈틈없이 연속적으로 나열된 자료구조를 말한다. 그러나 자바스크립트의 배열은 동일한 크기를 갖지 않아도 되며, 연속적으로 이어져 있지 않을 수도 있는 희소 배열의 성질을 가지고 있다. 따라서 자바스크립트의 배열은 일반적인 배열의 동작을 흉내 낸 특수한 객체이다.
객체와 마찬가지로 배열도 다양한 생성 방식이 있다. 리터럴, Array 생성자 함수, Array.of, Array.from 등을 사용할 수 있다.
배열의 요소를 참조할 때는 대괄호 표기법을 사용한다. 배열은 사실 인덱스를 나타내는 문자열을 프로퍼티 키로 갖는 객체이다. 따라서 객체에 프로퍼티를 동적으로 추가하는 것처럼 배열에도 요소를 동적으로 추가할 수 있다.
자바스크립트는 배열을 다룰 때 유용한 다양한 빌트인 메서드를 제공한다. Array 생성자 함수는 정적 메서드를 제공하며, Array.prototype은 프로토타입 메서드를 제공한다. 배열 메서드는 결과물을 반환하는 패턴이 두 가지이므로 주의가 필요하다. 원본 배열을 직접 변경하는 메서드와 새로운 배열을 생성하여 반환하는 메서드가 있다. 원본 배열을 직접 변경하는 메서드는 외부 상태를 직접 변경하는 부수 효과가 있으므로 사용할 때 주의해야 한다. 따라서 가급적 원본 배열을 직접 변경하지 않는 메서드를 사용하는 편이 좋다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array
Array - JavaScript | MDN
JavaScript Array 클래스는 리스트 형태의 고수준 객체인 배열을 생성할 때 사용하는 전역 객체입니다.
developer.mozilla.org
'Javascript' 카테고리의 다른 글
| 모던 자바스크립트 Deep Dive 읽기 - 26장 : ES6 함수의 추가 기능 (0) | 2022.04.07 |
|---|---|
| 모던 자바스크립트 Deep Dive 읽기 - 25장 : 클래스 (0) | 2022.04.07 |
| 모던 자바스크립트 Deep Dive 읽기 - 24장 : 클로저 (0) | 2022.04.07 |
| 모던 자바스크립트 Deep Dive 읽기 - 23장 : 실행 컨텍스트 (0) | 2022.04.07 |
| 모던 자바스크립트 Deep Dive 읽기 - 22장 : this (0) | 2022.04.07 |