數組的length屬性是一個非常常用的屬性。不過,在JavaScript中,數組的 length 屬性有一些特別,下面我們詳細介紹JS中數組的 length 屬性。所有主流瀏覽器均支持該屬性。
## 語法
```
arrayObject.length
```
## 返回值
數組對象的length屬性返回一個比該數組最大下標大1的整數,即數組的最大下標 + 1。
## 示例&說明
數組的length屬性一般用于獲取數組中的元素個數。
```
var array = ["CodePlayer", 18, true, 8];
alert(array.length); // 4
```
不過,在JavaScript中,數組的length屬性并不一定能真實反映數組中的元素個數。因為在JS中,數組的 length 屬性返回的值是其數組的最大下標值 + 1,而不是返回數組中的元素個數。
如果數組中的元素是連續的(0 ~ N),那么其 length 屬性就等于數組中的元素個數;如果數組中的元素是不連續的,則 length 屬性無法反映數組中的元素個數。
```
var array = [ ];
array[3] = "CodePlayer";
array[5] = 18;
// 返回最大下標值 + 1,即5 + 1
alert(array.length); // 6
array[8] = "www.365mini.com";
alert(array.length); // 9
```
此外,即使我們使用delete操作符刪除了數組最大下標的元素,也無法改變length屬性的值。詳情參考JavaScript delete操作符詳解。
```
var array = [ ];
array[3] = "CodePlayer";
array[5] = 18;
delete array[5]; //刪除最大下標的元素
// length屬性不變
alert(array.length); // 6
```
絕大多數情況下,只有使用Array對象自帶的添加或移除元素的方法才能夠改變 length 屬性的值,比如push()、 unshift()、 shift()、 pop()、 splice()等方法。
```
var array = [];
array[3] = "CodePlayer";
array[5] = 18;
alert(array.length); // 6
// 移除數組最后一個元素,length - 1
array.pop();
alert(array.length); // 5
// 添加元素到數組尾部,length + 1
array.push(5);
alert(array.length); // 6
// 移除數組的第一個元素,length - 1
array.shift();
alert(array.length); // 5
```
與多數語言不同的是,JS中數組的 length 屬性不是只讀的,這意味著我們可以設置length屬性的值。如果 length 屬性被賦了一個比原先值小的數值,則該數組將被截斷,所有數組下標等于或者大于新 length 屬性值的元素都將丟失。如果為 length 屬性賦一個比先前值大的值,則該數組在形式上被擴展,但不創建新元素。此外 length 的賦值必須是一個非負數,否則會引發范圍錯誤(RangeError)。
```
var array = [];
array[3] = "CodePlayer";
array[5] = 18;
alert(array.length); // 6
// 數組下標大于等于2的元素都將被丟棄
// 此時數組中沒有元素,但length為2
array.length = 2;
// 數組將會在形式上被擴展,但不會創建任何新的元素
array.length = 20;
// length屬性只接受非負數,設為負數將會導致范圍出錯(RangeError)
// array.length = -3;
```