1,“关联数组”:
a = new Array();alert(a.length); //out : 0a['a'] = 'a';a['b'] = 'b';alert(a.length); //out : 0alert(a['a']); //out : aalert(a['b']); //out : b2,“索引数组”:
a = new Array();alert(a.length); //out : 0a[5] = 5;alert(a.length); //out : 6alert(a.toString()); //out : 看下面的截图 1:
也就是说,当执行 a[5] = 5 时,前 5 个元素都被分配了 undefined 的值,因为数组索引都是从 0 开始的,所以,我们只是对第 6 个元素 a[5] 进行了赋值,但是要注意的就是前五个也被“分配”了,只不过是 undefined 的值,所以这里的 a.length 等于 6.
其实上面的 a[5] = 5 等价于下面的:
a = new Array(6); // 定义长度为 6alert(a.length); // out : 6alert(a.toString()); //看下面的截图 2a[5] = 5;alert(a.toString()); //看下面的截图 3图 2:
图 3: