数组小细节
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。