数组小细节

var a=[];
a[1]=1;
a[13]=13;
a["14"]=14;
a["footer"]="footer";
console.log(a[2]);                   //undefined
console.log(a["14"]);              //14
console.log(a[14]);                //14
console.log(a.footer);            //"footer"
console.log(a.length);           //"15"
delete a[13];                         
console.log(a[13]);               //undefined
console.log(a.length);          //15
console.log(a[footer]);         //footer is not defined

结合这道题目来阐述一些数组的小细节:

1.稀疏数组即含有空白或空缺单元的数组,未声明的值如:a[2]值为undefined。

2.如果字符串键值能够被强制类型转换为十进制数字的话,它就会被当作数字索引来处理,如:a["14"]值为14等于a[14]。

3.虽然数组通过数字进行索引,但是它们也是对象,所以也可以包含字符串键值和属性,如:a["footer"]值为"footer"等于a.footer。

4.虽然可以包含字符串键值和属性,但是却不会影响数组的长度,所以a["footer"]并不会影响长度,如a.length值为15,因为声明过了a[14]。

5.delete可以将单元从数组中删除,但是并不会影响length,所以delete a[13]后,a[13]值为undefined,a.length依然为15。

6.虽然我们声明了a["footer"],但并未声明footer,所以a[footer]会报错,footer is not defined。