배열은 순서 있는 값들의 집합이다. 배열 안의 각 값을 원소라 부르며 각 원소는 배열 안에서 그 위치를
가리키는 번호를 할당 받는데 이 번호를 인덱스(index)라고 한다. 자바스크립트는 타입이 고정되지 않은 언어(untyped language)기 때문에 같은 배열의 각 원소는 서로 다른 타입을 가질 수 있다. 또한 배열은 다른 배열을 원소로 가질 수도 있기 때문에, 배열의 배열과 같은 자료구조를 생성할 수 있다.
이 책에서는 종종 객체와 배열을 서로 다른 데이터 타입인 것처럼 다룬다. 대부분의 자바스크립트 프로그램에서는 객체와 배열을 분리된 데이터 타입으로 간주할 수 있기 때문에, 이와 같이 객체와 배열을 구별하여 취급하는 것은 유용하기도 하고, 한편으로는 합리적인 단순화라 할 수 있다.
그러나 객체와 배열의 동작 원리를 완벽하게 이해하기 위해서는 진실을 알아야만 한다. 배열은 추가 기능을 아주 조금 지닌 객체에 지나지 않는다. 이러한 사실은 typeof 연산자를 사용하여 확인할 수 있는데, 배열 값이 이 연산자를 사용하면 "object" 라는 문자열을 반환한다.
배열 리터럴을 사용하면 가장 쉽게 배열을 생성할 수 있다.
배열 리터럴은 대괄호([]) 안에 배열의 원소들을 콤마로 구분한 목록이다. 예를 들면 다음과 같다.
var primes = [2, 3, 5, 7, 11]; // 5객 숫자 값들로 이루어진 배열
var mics = [1.1, true, "a", ]; // 서로 다른 타입을 가진 3개의 원소로 구성된 배열
배열 리터럴에는 상수뿐만 아니라 임의의 표현식도 사용할 수 있다.
var table = [base, base+1, base+2, base+3];
배열 리터럴은 객체 리터럴이나 또 다른 배열 리터럴을 포함할 수 있다.
배열 리터럴의 첫 번째 값은 새롭게 생성된 배열의 0번 인덱스에 저장되며, 두 번째 값부터는 배열의 1번
인덱스부터 차례대로 저장된다. 배열 리터럴의 콤마 사이에 아무것도 적지 않으면 정의되지 않은 원소가
생성된다.
var undefs = [, ,]; // 이 배열의 원소는 두 개다. 두 원소가 모두 정의되지 않았다.
배열을 생성하는 또 다른 방법은 Array() 생성자를 사용하는 것이다.
이 생상자는 세 가지 다른 방법으로 호출할 수 있다.
- 전달인자 없이 호출하는 방법
var a = new Array();
이 경우에는 배열 리터럴[] 같이 아무 원소도 없는 빈 배열을 생성한다.
- 명시적으로 배열의 처음 n개의 아무 원소도 없는 빈 배열을 생성한다.
var a = new Array(5, 4, 3, 2, 1, "testing, testing");
이 경우에 생성자는 전달인자의 목록을 받는다. 각 전달인자는 임의의 타입일 수 있으며 배열의 각 원소를 규정한다. 각 원소는 배열의 0번 인덱스부터 차례대로 할당되며, 배열의 length 프로퍼티의 값은 생성자가 받은 전달인자들의 수로 설정된다. 이렇게 Array() 생성자를 사용하는 것보다는 배열 리터럴을 사용하는 것이 언제나 더 단순하고 수월하다.
- 배열의 길이를 지정하는 숫자 값을 전달인자로 하여 호출하는 방법
var a = new Array(10);
이 경우에는 생성자의 전달인자로 지정된 수치만큼 원소를 갖는 배열을 생성한다. 이때, 각 원소의 값은 undefined이면 length 프로퍼티의 값은 생성자의 전달인자에 명시된 수치이다. 이 방법은 배열에 저장될 원소들의 개수를 미리 알 수 있을 때에 한아여, 배열 크기를 미리 할당할 때 사용된다. 이때 배열 리터럴은 사용하기 적합하지 않다.
'IT_Programming > JavaScript' 카테고리의 다른 글
자바스크립트 완벽가이드 - 7.7 배열 메서드 (0) | 2010.07.04 |
---|---|
자바스크립트 완벽가이드 - 7.6 배열 원소 읽고 쓰기 (0) | 2010.07.04 |
자바스크립트 완벽가이드- 7.4 공통적으로 나타나는 객체 프로퍼티와 메서드 (0) | 2010.07.04 |
자바스크립트 완벽가이드 - 7.3 연관 배열로서의 객체 (0) | 2010.07.04 |
자바스크립트 완벽가이드 - 7.2 객체 프로퍼티 (0) | 2010.07.04 |