배열 length 프로퍼티의 특성
배열의 length 프로퍼티는 기본적으로 배열의 원소의 개수를 표현하지만, 반드시 원소의 개수와 일치하지는 않습니다. Javascript 배열의 특징 중 하나인데요, 배열 내의 인덱스 값 중 가장 큰 인덱스 값을 기준으로 산출하는 프로퍼티 입니다. 사실상 배열의 length에 대해서는 아래와 같이 정의할 수 있습니다.
[배열의 인덱스 값 중 가장 큰 인덱스 + 1]
즉, 다음 예제와 같이 동적으로 배열의 원소를 할당하고 난 후 해당 배열의 length 값을 출력해보면 위의 정의가 쉽게 이해될 것입니다.
var newArr =[];
console.log(newArr.length);
newArr[0] = 10;
newArr[1] = 20;
newArr[99] = 999;
console.log(newArr.length);
/* 출력 */
// 0
// 100
위의 코드에서 인덱스 0, 1 다음에 99에 원소를 할당했습니다. 그리고 length 프로퍼티를 출력하니 100이 나왔습니다. 이는 결국 length는 인덱스 넘버 지점까지 원소가 있다고 가정한 길이의 값이 출력되는 것으로 이해할 수 있습니다. 물론, 원소값이 저장되지 않은 부분들이 있기 때문에 실제로 메모리 상에 100개의 분량의 용량이 할당 되지는 않습니다.
length프로퍼티 동적 변경
배열의 length 프로퍼티는 다른 프로퍼티 값들과 마찬가지로 직접 값을 할당하거나 변경할 수 있습니다. 우선 기본적으로 배열은 인덱스에 원소가 할당되는 경우가 있고 반면 인덱스에 원소가 할당되지 않는 경우에는 undefined로 처리된다는 사실을 기본으로 기억합시다.
아래의 예제에서 기본 length를 증가 시키고 다시 감소시킨 다음 해당 배열에 어떤 현상이 일어나는지 확인해 봅시다.
var newArr = ['a', 'b', 'c'];
console.log(newArr.length);
newArr.length = 6;
console.log(newArr);
newArr.length = 2;
console.log(newArr);
/* 출력 */
// 3
// [ 'a', 'b', 'c', <3 empty items> ]
// [ 'a', 'b' ]
초기 기본 배열은 원소가 3개이므로, length는 3으로 출력됩니다. 이후 임의로 length값을 6으로 변화시킨 후 newArr의 원소를 출력하니 기본 원소에 더해 undefined 원소가 3개 출력됩니다. 이후 length를 2로 축소시켰을 때는 원소의 최대 개수가 2개가 되었으므로 기존 3개의 원소 중 'c'까지 삭제되었습니다.
'Programming > Javascript' 카테고리의 다른 글
5. Javascript 배열 (4) - 배열과 객체 비교 (0) | 2022.08.30 |
---|---|
5. Javascript 배열 (3) - 배열 push( ) 메소드 (0) | 2022.08.27 |
5. Javascript 배열 (1) - 배열의 특성 (0) | 2022.08.23 |
4. Javascript 프로토타입([[Prototype]]) (0) | 2022.08.19 |
3. Javascript 참조 타입의 특성 (0) | 2022.08.18 |