在 JS 中獲取陣列長度非常簡單,每個陣列都有一個 length 屬性,該屬性返回陣列的最大長度,即其值等於最大下標值加 1。由於數位下標必須小於 2^32-1,所以 length 屬性最大值等於 2^32-1。
範例1
下面程式碼定義了一個空陣列,然後為下標等於 100 的元素賦值,則 length 屬性返回 101。因此,length 屬性不能體現陣列元素的實際個數。
var a = []; //宣告空陣列
a[100] = 2;
console.log(a.length); //返回101
length 屬性可讀可寫,是一個動態屬性。length 屬性值也會隨陣列元素的變化而自動更新。同時,如果重置 length 屬性值,也將影響陣列的元素,具體說明如下:
-
如果 length 屬性被設定了一個比當前 length 值小的值,則陣列會被截斷,新長度之外的元素值都會丟失。
-
如果 length 屬性被設定了一個比當前 length 值大的值,那麼空陣列就會被新增到陣列末尾,使得陣列增長到新指定的長度,讀取值都為 undefined。
範例2
下面程式碼演示了 length 屬性值動態變化對陣列的影響。
var a = [1,2,3]; //宣告陣列直接量
a.length = 5; //增長陣列長度
console.log(a[4]); //返回undefined,說明該元素還沒有被賦值
a.length = 2; //縮短陣列長度
console.log(a[2]); //返回undefined,說明該元素的值已經丟失