본문 바로가기

Programming/Javascript

5. Javascript 배열 (1) - 배열의 특성

javascript logo

 

Javascript 배열의 특징과 배열 리터럴

자바스크립트의 배열은 타 언어의 배열과 달리 크기 지정이 필요 없고, 저장 위치에서 자유롭습니다. 우선 이에 따라 기본적인 배열 생성 방식에 대해 알아보겠습니다. 앞서 살펴본 객체 리터럴과 마찬가지의 방법으로, 배열 리터럴을 통해 배열을 생성할 수 있습니다. 배열 리터럴은 객체와 달리 대괄호( '[ ]' )를 사용합니다. 

 

배열 리터럴을 통해 원소 3개를 가진 배열을 선언하고, 각 원소를 출력해 보겠습니다.

 

var newArr = [
    'one',
    'two',
    'three'
];

console.log(newArr[0]);
console.log(newArr[1]);
console.log(newArr[2]);

 

대괄호를 이용해 각 원소를 선언하고, 이후에 인덱스 넘버를 통해 각 원소에 접근해 출력합니다. 자바스크립트의 가장 기본적인 배열 사용법 입니다. 

 

 

배열 요소의 동적 생성

배열도 객체의 프로퍼티와 마찬가지로, 동적인 방식을 통해 원소를 선언할 수 있습니다. 단, 배열 객체의 인덱스 넘버를 고려해 순차적으로 넣어야 하는 조건이 없고 원하는 인덱스 위치에 원소를 선언할 수 있습니다. 그럼 원소가 선언되지 않은 위치에는 어떤 일이 생기는 지 한 번 알아보겠습니다. 

 

var newArr = [];

newArr[0] = 'TEN';
newArr[2] = 99999;
newArr[5] = false;

console.log(newArr);
console.log(newArr.length);

/* 출력 */
// [ 'TEN', <1 empty item>, 99999, <2 empty items>, false ]
// 6

 

위 예제 코드를 통해 배열의 특성을 정리해 보겠습니다. 우선, 0 / 2 / 5번에 각각 배열 원소를 할당하였는데, 모두 다른 타입의 원소입니다. 즉, 자바스크립트의 한 배열 안에는 다양한 타입의 원소를 선언하는 것이 가능합니다. 더불어 인덱스 넘버가 연속되지 않게 선언되었는데 원소가 선언되지 않은 인덱스는 'empty item'으로 출력되었습니다. 정확하게는 해당 인덱스에는 undefined가 선언됩니다. 더불어 배열의 길이를 나타내는 기본 프로퍼티인 length를 출력했는데, 6이 출력되었습니다. 즉 배열의 길이를 판단 할 때, 실제 원소의 개수를 카운팅 하지 않고 가장 큰 인덱스 넘버를 기준으로 배열의 크기(길이)를 산출합니다.

 

위에서 length 프로퍼티를 간단하게 언급하였는데, 배열 객체가 갖는 length 프로퍼티는 단순히 객체 원소의 갯수를 표시하는 속성 값으로 보이겠지만 생각보다 배열에서 중요한 속성입니다. 배열의 많은 메소드나 동작이 이 length를 통해서 이루어지기 때문입니다. 단순하지만, 매우 중요한 프로퍼티입니다. 이 배열의 length에 대해서는 좀 더 자세히 다음 아티클에서 살펴보도록 하겠습니다.