배열의 길이를 읽거나 설정할 수 있다.
보통 배열의 원소 개수라고 알고 있는데 이것은 잘못된 것이다. 즉 다음과 같은 코드를 테스트해 보면 length
는 원소 개수가 아니라는 것을 알 수 있다.
length
는 원소의 개수가 아니라 만들어진 데이터를 담을 수 있는 슬롯(slot)의 개수라고 할 수 있다. 슬롯은 실제 데이터를 담는 것과 무관하게 인덱스를 통해서 순차적으로 생성이 된다.
array.length
분류 | 값 | 설명 |
---|---|---|
configurable | no | |
enumerable | no | |
writable | yes |
배열의 길이는 보통 배열의 원소의 개수를 의미하는 것처럼 보이지만 사실은 인덱스에 따라 값이 정해진다. 예를 들어서 다음의 코드는 length
가 실제 배열의 원소와 관계없이 마지막 인덱스를 기준으로 배열의 길이를 갖는다.
var arr = [];
arr[0] = "apple";
arr[10] = "banana";
console.log(arr.length); // 11을 출력
따라서 length
프로퍼티를 설정하는 경우에는 실제 배열의 길이보다 작게 설정하면 설정한 길이보다 큰 범위에 있는 배열의 항목은 제거가 된다.
var arr = [];
arr[0] = "apple";
arr[10] = "banana";
console.log(arr.length); // 11을 출력
arr.length = 10;
console.log(arr[10]); // undefined 출력