function test() {
var arr = new Array(2);//定义一个长度为2的数组
arr[arr.length] = 10;//arr.length =2 相当于arr[2] =10
alert(arr[arr.length]);//输出 undefined,为什么?

arr[2] = 1;//对arr[2]赋值
alert(arr[2]);//输出arr[2] =1,为什么?
alert(arr[arr.length]);//输出arr[2] 为undefined,为什么?
}
请问一下为什么会出现这样的结果?javascript数组边界

解决方案 »

  1.   

    假设 arr的长度为2 arr.length=2
    当你设定arr[2]=10时  arr.length=3
    所以arr[arr.length]就是arr[3]了  所以是undefined
    第二个问题也是
      

  2.   

    那这怎么解释?
     arr[2] = 1;//对arr[2]赋值
      alert(arr[2]);//输出arr[2] =1你不知道js的数组是不会越界的吗,除非超过 2^32-1
      

  3.   

    1.超出数组界限;数组下标从0开始
    2.数组自动扩展长度
    3.arr.length =3   !=  arr[2]