<script> var a=new Array(3) a["a"]=1 a["c"]=2 a["b"]=3 a[5]=4 a["x"]="xasd" a[""]="dd" a[3]=5 for (b in a) document.write(b,"--",a[b],"*<br>") </script>结果为3--5*5--4*a--1*c--2*b--3*x--xasd*--dd*这里js把数字类型下标的放在了前面,字符类型的放在了后面,而且把数字类型下标小的放在了前面,比如a[3]尽管出现得比a[5]晚,但是遍历输出的时候放在了前面。而字符类型的下标就没有这样的排序,是按照赋值的顺序出现的。
2 回答
胡子哥哥
TA贡献1825条经验 获得超6个赞
数字下标和字符串作为属性名其实完全不是一回事
虽然你前面用new Array(3)来初始化的a,其实这时的a仅仅是初始化为[undefined,undefined,undefined],但后面a["a"]=1之类其实已经不是给数组元素赋值了,而是给a对象的属性设置属性值了,注意这些值不会导致数组对象的length属性值改变的。
console.log(a);
console.log(a.length);
console.log(a[2]);
a["a"]=1
a["c"]=2
a["b"]=3
console.log(a.length);
a[5]=4
console.log(a.length);
a["x"]="xasd"
a[""]="dd"
a[3]=5
console.log(a);
console.log(a.length);
for (b in a)
document.write(b,"--",a[b],"*<br>")
如果按上面的代码,你可以看到更多细节
添加回答
举报
0/150
提交
取消