数组是一种能存储多个值的数据类型。

var arr = [100, 20, 30];
console.log( arr[1] ); // 20
var len=arr.length;
console.log( len );     // 3
arr[2] = 0;
console.log( arr[2] ); // 0

第一行创建了一个数组,通过[]创建数组属于用数组的字面量创建数组,在[]中依次输入每个数据,用“,”隔开即可。数组中每一项的数据类型可以是任意的,字符串,布尔值,数值,甚至数组,函数都可以,数据的个数也没有限制(受制于计算机内存和计算能力等,实际上不应该有太多的数据项)。

第二行访问了一个数组元素,[]中的数字表示数组的索引位置,数组的索引从0开始。

第三行获取了数组的长度,每个数组都有一个length属性,它的值也就是数组的长度,等于数组的最大索引值+1。

第五行修改了数组中第三项的值,修改数组中某一项数据的值,只需要用赋值语句给它重新赋值即可。 可以用var arr=[];或者var arr=new Array();来创建一个空数组,这两种方式创建的空数组无任何区别。

要遍历数组中的所有值,可以使用循环,对于数组,通常用for循环比较常见,比如:

for(var i=0; i<arr.length;i++){
  console.log( i );
}
// 100
// 20
// 0

for是关键字,i是计算器,被初始化为0,i<arr.length 是循环判断条件,{ }中的内容为循环体,i++则是每次循环体执行完后执行的用以改变计算器的语句。 for循环中,变量初始化语句,条件判断语句,变量变化语句甚至循环体都是可选的,所以完全可以代替while循环,不过具体使用哪种循环完全取决于编码习惯和个人喜好。

i++是变量递增语句,相当于i = i+1(在复杂情况下还是有区别的~),相应的,有递减运算语句,i--。

var arr=[];
arr.push( 30 );
console.log( arr.length );   // 1
arr[10] = 10;
console.log( arr.length );  // 11
console.log( arr[5] );         // undefined

这段代码第一行创建了一个空数组。

第二行调用数组的push方法(实际上是一个函数,可以先不管它的原理,对象中会讲)在数组的最后一项添加了一个新的数组项(空数组没有数据项,所以添加在第一项)并用它的参数给数组项赋值,简单的arr.push( a )等价于arr[arr.length] = a。但实际上push可以接受任意多的参数,它会将它的参数按顺序依次增降到调用它的数组的末尾。

第四行代码直接给arr[10]赋值,这是允许的,通过第五行可以看到,这样操作会改变数组的长度(前面说过,数组的长度等于它最后一项的索引值+1),第六行则说明,这样形成的数组,中间的数组项是未赋值的(undefined),这种数组称为稀疏数组(这和自己把一个稠密数组的数组项赋值为 undefined 是不同的,和用 delete 删除稠密数组的某些数组项的值相同,书中未提及),创建一个稀疏数组的简单方法是 var arr = new Array(5),这样就创建了一个长度为5的稀疏数组。

笔记写完了,其实我有点后悔写这书的笔记了,还是那个原因,这书看起来挺有趣,对于初学者来说更是能极大的加深对基本概念的理解,而且也好玩,但是我已经不是初学者了,一章我半小时就能看完,也觉得挺有趣,但写这些笔记也要半小时。对我来说好像没啥收获,所以后面的内容还写不写就看情况啦~