翻閱古今
2019-02-28 14:50:35
<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
提交
取消