ed
Var primes=[2,3,4]; Var misc=[1.1,true,”ik”]; 直接量的值还可以是表达式 Var base=23;
Var table[base,base+3,base+4]; 直接量还可以是对象直接量或数组直接量 Var b=[[1,{x:1,y:2}],2];
未定义的元素通过忽略逗号之间的元素值来创建
Var count=[1,,2];//数组有三个元素,中间的元素没有赋值 Var undef=[,,];//数组有2个元素,全部为没有赋值
用Array()构造函数创建数组
Var a=new Array():
Var b=new Array(3,2.3,4,”saf”,”sf”);
Var c=new Array(10);//这里的每个元素都没有赋值为undefin
7.6数组元素的读写
7.6.1添加数组新元素
JS中可以在任何时刻改变元素个数,而且由于JS数组是稀疏的,
即数组的下标不必落在一个连续的数字范围内,只有那些真正存储在数组中的元素才能由JS实现分配内存。
例 a[0]=1; a[100]=2;
这里JS解释器只给数组下标为0和100的元素分配内存,而试图
访问其它的元素时将得到一个undefined
7.6.2删除数组元素
用delete运算符把一个元素设置为一个undefined值,但是元素
本身还继续存在,要真正地删除一个元素,那么必须使用一个数组方法。(当用方法移出了一个元素后,再去访问该元素,虽然也会返回一个undefined值,但用length属性去测试会发现长度变短了,说明是真正的移出了一个元素;但是仅仅用delete运算符去删除一个元素,用length属性去测试时会发现长度没有变,说明没有真正移出元素!)
7.6.3.数组长度(length属性) 7.6.5截断或增长数组
Length属性是可读可写的,通过修改length的值可以截断和增长
数组的长度。
7.6.6多维数组
JS不支持真正的数组,它支持数组的数组,即变长数组! Var a=new Array(10);
For(var b=0;b
}
A[b]=new Array(10);
7.7数组方法
参考API去
7.8类似数组的对象
把任何具有一个length属性以及相应的非负整数属性的对象作为一种
数组,这是合理。虽然不能调用数组的方法或者length属性期待特殊的行为,仍然可以用遍历一个真实数组代码来遍历它们。事实证明,许多数组对于类似数组的对象和真正的数组对象都是一样有效的。只要不尝试对类似数组的对象添加元素或者改变length属性。()
例:
var a={}; var i=0;
while(i<10) }
{
a[i]=1*I; i++;
a.length=i; var total=0;
for(var j=0;j
total+=a[j];
结果:45
a.length=9;//改变length属性想改变类似对象数组的元素个
数。
for(var j=0;j
total+=a[j];
结果为:45
上述改变为什么不成功?因为这些操作对类似数组的对象没用,想通过
改变length来改变类似对象数组的个数,那是不可能的,它仅仅是一个对象的属性。不能作任何用处实际上! 八、函数
8.1函数定义和调用
JS也不会检测传递的数据是不是那个函数所要求的类型,也不会检测传
递给它的参数个数是否正确。如果传递的参数比函数需要的个数多,那么多余的值会忽略掉; 如果传递的参数比函数需要的个数少,那么所被忽略的参数就被赋予undefined。
8.1.2函数直接量 或
Var f=fucntion fact(x) {return x*x;}//也可以加函数名字
Var f=function(x) {return x*x;}
Var test=(function(x) {return x*x;})(10);//定义后马上调用
8.1.3函数命名
函数名小写字母开始!
8.2函数参数
8.2.1.可选参数
它是利用了当传递给函数的参数个数小于函数的参数时,其它的参数有一个undefined值。要用可选参数时,必须能够为忽略掉的参数分配一个默认的合理值。
Function test(o,/*optional*/ a){
a=a || [];
for(var property in o) a.push(property); return a; }
注意,在使用可选参数时,应该确保把可选参数放在参数列表的末尾。
8.2.2.可变长度的参数列表:arguments对象
arguments并不是一个数组,它是一个对象,它虽然定义了带编码
的元素和length属性。arguments对象允许完全地存取那些实际参数值,即使某些或全部参数还没有被命令。例如有一个函数f,它定义了一个参数x,但是调用f时传递给了它两个参数,那第个一参数可以用x或arguments[0]可以存取第一个参数,而第二个实际参数只能通过arguments[1]来存取。