先来看下定义数组的常见方式:
var aa=[];//没有元素的数组 var bb=[10,20,30,40,50];//有五个元素的数组 var cc=new Array(10);//创建有10个元素的数组,里面没有内容
JS中的数组和其他语言比如C/java有所不同,JS中的数组元素可以是任意类型的值,可以是函数
a=["aa",{ao:"ao",bo:"bo"},false,undefined,function add(a,b){return a+b;}];//不会报错
看一下我们省略数组直接量中的某个值时数组的情况:
var arr=[10,20,60];//数组长度为3 var arr2=[10,20,,60];//数组长度为4(倒数第二个元素默认赋值为undefined) var arr2=[10,20,,60,];//数组长度为4,因为数组结尾的逗号可选
用new Array()创建数组适用的情况
当我们知道要创建的数组的长度时,可以用new Array(len)先把内存空间预留出来,此时里面的任何元素的数据类型都为undefined
例如
var aa=new Array(10);//先预留出10个存放元素的位置,默认值都为undefined
数组内容的读和写:
我们可以直接操作下标来读写数组元素,下标[]里面的内容必须是返回非负整数值的表达式,就像这样:
var arr=[10,11,13,19,0,22]; alert(arr[1+1]);//13 console.log(arr[(function(){ return 1; })()])
如果我们试图访问不存在的数组元素,就像这样:
var arr=[10,11,13,19,0,22]; console.log(arr[999]); console.log(arr[-1]); console.log(arr[3.1415]); console.log(arr["str"]); console.log(arr[false]); console.log(arr[true]) console.log(arr[undefined]);
以上统统返回undefined!就连arr[Boolean]这种语法也不会获取到数组元素,当然还有其他情况。
下标数据为整型字符串的情况:
我们将alert(arr["str"]);中的str改成1试试:
console.log(arr["1"]);
发现能获取到正确的元素 11
由此可见,JS在访问数组元素时,如果[]内的数据是整数字符串,会先转化为整数,再进行访问
下标数据为浮点型字符串类型
console.log(arr["2.25"]);
这里字符串中的数据是一个小数,访问数组元素时并没有被转化为整数,结果还是获取不到
下标数据为xx.00时的情况:
再来看一个例子:
var arr=[10,11,13,19,0,22]; console.log(arr[2.0]);//返回13
这种情况就和访问 arr[2] 相同了