常见的数组有三种:索引数组、关联数组、稀疏数组。
其中只有索引数组在官方文档中提及,后两种均未提及。
以上三种数组的长度
console.log("arr1的长度:", arr1.length);
console.log("arr2的长度:", arr2.length);
console.log("arr3的长度:", arr3.length);
/*
arr1的长度: 5
arr2的长度: 0
arr3的长度: 35
*/
所以可以得到对于索引数组,长度是有效的;但对于关联数组无法获取长度。而对于稀疏数组,取决于键。
数组长度是可变的,例如声明数组长度为10,那么当元素超过10个时,会自动扩容
var arr = new Array(5);
arr[3] = 100;
arr[5] = "a";
arr[8] = true;
console.log(arr.length); //输出9
关于数组的类型,无论哪种方式定义数组,数组都是引用类型
// 1.字面量/直接量
var arr1 = [];
// 2.构造函数方式
var arr2 = new Array();
// JavaScript语言中的数组无论哪一种方式定义,都是引用类型
console.log(typeof arr1, typeof arr2); // object object
console.log(arr1 instanceof Array, arr2 instanceof Array);//true true
删除数组中的元素使用的是delete
关键字,但是此删除本质上是将原内容置空。这就会导致数组长度并不会变化。
var arr = [1, 2, 3, 4, 5];
delete arr[2];
console.log(arr, arr.length); //输出5