(2)语法2:数组、函数、函数一些细节、匿名函数、动态函数
一、数组
数组用于存储更多的数据,是一个容器
js中的数组定义的两种方式
特点:①长度可变
②元素的类型任意,建议使用数组时,存储同一类型的元素,方便操作(比如算术运算)
数组是js中的最常用容器,有很多功能,待函数处再详细了解
1)数组定义的第一种方式
var arr=[ ]; var arr={2,6,5};
<script type="text/jscript">
var arr=[3,1,5,9];
alert("len:"+arr.length);
alert(typeof(arr));
arr[4]=54;
arr[5]="abc";
arr[6]=true;
for(var x=0;x<arr.length;x++)
{
document.write("arr["+x+"]="+arr[x]);
document.write("<br/>");
}
</script>
输出:
2)数组定义的第二种方式:使用了javascript中的Array对象来定义
var arr=new Array( );
var arr1=new Array( 5);//数组定义并且长度为5
var arr2=new Array(5,6,7);定义一个数组,元素为5,6,7
二、函数
函数:一个功能的封装体
定义功能需要两个明确:1)功能的结果 。2)功能实现中参与运算的未知的内容
格式:通过指定的关键字来定义。
function 函数名 (参数列表)
函数体;
return 返回值;//若没有具体的返回值,return省略
}
函数也是调用才能使用
直接在body内写调用就行
<script type="text/jscript">
function demo(){
alert("demo run");
}
demo();//调用
function add(a,b)//不用写变量var
{
return a+b;
}
var c=add(2,3);
alert("c="+c);
</script>
细节①:只要使用函数的名称,就是对这个函数的调用,(没有重载形式)函数中有个数组在对函数的参数进行存储,这个数组就是argument
注意也不允许重名, 如参数列表x和for中自定义的参数
function show(x,y)
{
// alert(arguments.length);
for(var a=0;a<arguments.length;a++)
{
document.write(arguments[a]);
}
// alert(x+":"+y);
}
show(3,2,5,1);//建议函数中定义几个参数,就传递几个实参
细节②函数名的含义
function getSum()
{
return 100;
}
var sum=getSum;//若写getSum(),则为函数调用
alert("sum="+sum);
js是基于对象的,所以函数也是对象,即函数对象(堆),函数名在栈中,函数名其中是个地址,指向了函数对象。在var sum=getSum;中,getSum的地址赋给了sum,sum就也指向了这个对象,然后alert输出的是字符串,此对象的字符串就是函数。
在Java中:
demo d=new demo();
System.out.println(d);//因为demo继承了Object类,所以打印会出现哈希码getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
细节③:
function show_2()
{
alert("show2 run");
}
alert(show_2());
//第一个弹出的是:show_2 run 第二个弹出的是:undefined
因为函数没有返回值
三、动态函数:使用的是js中内置的一个对象Function
var function_name = new Function(arg1, arg2, …, argN, function_body)
在上面的形式中,每个 arg 都是一个参数,最后一个参数是函数主体(要执行的代码)。这些参数必须是字符串。
动态体现在该对象写什么函数体就是什么对象。
var add=new Function("x,y","var sum;sum=x+y;return sum")
var he=add(4,8);
alert("he="+he);
四、匿名函数
没有名字的函数,通常是函数的简写形式,需要一个对象指向这个函数
var add2=function(a,b){
return a+b;
}
alert(add2(7,8));
它是如下的简写形式:
function add3(a,b)
{
return a+b;
}
var i=add3(3,5);
alert(i);