数组是一段线性分配的内存,它通过整数去计算偏移并访问其中的元素。但JavaScript没有像这种数组一样的数据结构。
6.1 数组字面量
数组字面量是在一对方括号中包围零个或多个用逗号分隔的值的表达式。JavaScript允许数组包含任意混合类型的值:
var misc = ['string',98.6,true,null,undefined,['nested','array'],{object:true},NaN,Infinity];
6.2 长度
JavaScript数组的length是没有上界的。如果你用大于或等于当前length的数字作为下标来保存一个元素,那么length将增大来容纳新元素。不会发生数组边界错误。而把length设小将导致所有下标大于等于新length的属性被删除。
6.3 删除
由于JavaScript的数组是对象,所以delete运算符可以用来从数组中移出元素:
delete numbers[2];
但是会在数组中遗留一个空洞,所以可以使用splice方法,删除一些元素并替换为其他的元素。
6.4 枚举
因为JavaScript的数组是对象,所以for in 语句可以用来遍历一个数组的所有属性,但是它无法保证属性的顺序,为了避免这个问题通常使用for循环。
6.5 混淆的地方
常见的错误是在须使用数组时使用了对象,或者在须使用对象时使用了数组。当属性名是小而连续的整数时,你应该使用数组,否则,使用对象。
6.6 方法
JavaScript提供了一套作用于数组的方法,它们被存储在Array.prototype中的函数,Array.prototype可以被扩充。
数组是对象,所以可以直接给一个单独的数组添加方法
6.7 维度
JavaScript通常不会初始化,使用[]得到一个新数组,它将是空的,获得的值是undefined。
JavaScript没有多维数组,但它支持元素为数组的数组。