索引
读取和设置数组的值时,要使用方括号并提供相应值得基于0的数字索引
如下所示:
1 | var colors = ["Green", "Red", "Blue"]; // 定义一个字符串数组 |
方括号中的索引表示要访问的值。
如果索引小于数组中的项数,则返回对应项的值。
设置数组的值也使用相同的语法,但会替换指定位置的值。
如果设置某个值得索引超过了数组现有项数,数组就会自动增加到该索引值加1的长度。
数组的项数保存在其length属性中,这个属性始终会返回0或者更大的值。
如下所示:
1 | var colors = ["Green", "Red", "Blue"]; // 创建一个包含三个字符串的数组 |
数组的length属性不是只读的,通过设置这个属性,可以从数组的末尾移除项或向数组中添加新项。
如下所示:
1 | var colors = ["Green", "Red", "Blue"]; // 创建一个包含3个字符串的数组 |
该数组colors开始有3个值,将其length属性设置为2移除最后一项(位置为2的那一项),结果再访问colors[2]就会显示undefined
如果将其length属性设置为大于数组项数的值,则新增的每一项都会取得undefined值。
如下所示:
1 | var colors = ["Green", "Red", "Blue"]; |
该数组虽然包含3个项,但把它的length属性设置为4。这个数组不存在位置3,所以访问这个位置的值就得到了特殊值undefined
利用length属性值也可以方便地在数组末尾添加新项
如下所示:
1 | var colors = ["Green", "Red", "Blue"]; // 创建一个包含3个字符串的数组 |
由于数组最后一项的索引始终是length-1,因此下一个新项的位置就是length。每当在数组末尾添加一项后,其length属性都会自动更新以反应这一变化。
当把一个值放在超出当前数组大小的位置时,数组就会重新计算其长度值,即长度值等于最后一项索引加1。
如下所示:
1 | var colors = ["Green", "Red", "Blue"]; // 创建一个包含3个字符串的数组 |
我们向colors数组的位置99插入一个值,结果数组的新长度(length)就是100(99+1)。而位置3到位置98实际上是不存在的,所以访问它们都将返回undefined。
数组最多可以包含4 294 967 295个项,如果想添加的项数超过这个上限值就会发生异常。而创建一个初始大小接近这个上限值得数组,则可能会导致运行时间过长的脚本错误。