1 函数
1.1 函数的定义和调用
函数定义有以下几种方式:
1.1.1 最普通的定义方式
- "Content-Type" content="text/html; charset=UTF-8">
- <script language=< span="">"JavaScript">
- function square(x){
- return x*x;
- }
- var a=square(4);
- document.write(a);
- </script>
和Java等高级语言一样定义和调用函数的方法。
1.1.1 嵌套函数
在JS中函数竟然是可以嵌套的。
如下例所示:
- function m(a,b){
- function square(x){
- return x*x;
- }
- return a+square(b);
- }
- document.write("2+3*3="+m(2,3));
在函数里面可以写函数,神奇的JS~
<o:p> </o:p>
1.1.1 Function()构造函数
js 代码
- var f=new Function("x","y","return x*y");
- document.write("2*3="+f(2,3));
有点像实例化一个类,可以有n个字符串参数,前面n-1个代码函数的参数,最后一个是函数体。
这个函数实际上就等价于:
funtion f(x,y){
Return x*y;
}
运行结果是:2*3=6;
1.1.1 函数直接量
这种定义方法在成熟的产品化的JS库中十分常见,但是对于初学者而言却不常见。
- var f2=function(x) { return x*x};
- document.write("3*3="+f2(3));
1.1.1 递归调用
js 代码
- function factorial(x){
- if (x<=1)
- return 1;
- return x*factorial(x-1);
- }
- document.write("3!="+factorial(3));
输出结果是:3!=6
给函数的功能就是计算一个数的阶乘,如3!
1.1 作为数据的函数
- "Content-Type" content="text/html; charset=UTF-8">
- <script language=< span="">"JavaScript">
- function square(x){
- return x*x;
- }
- var a=square(4);
- var b=square;
- var c=b(5);
- document.write(c);
- </script>
很神奇,定义一个叫做square的函数,然后将它赋值给一个变量b,这个变量就具有square这个函数的功能了,也就等于是这个函数了。
<o:p> </o:p>
函数作为数据,意味着一个函数可以作为另一个函数的参数!<o:p></o:p>
比如:
- function add(x,y) { return x+y; }
- function multiply(x,y) {return x*y};
- function operate(operator,operand1,operand2){
- return operator(operand1,operand2);
- }
- document.write("2+3*4="+operate(add,2,operate(multiply,3,4)));
真的是好神奇,我们定义了两个函数,一个是加法add,一个是乘法multiply,又定义了一个函数叫做operate,也就是操作,它有三个参数,注意第一个参数就是那个函数名!函数也可以作为一个参数传到operate这个函数里,这个参数就代表了这个函数!
<o:p> </o:p>
1.1 函数是对象
在JS中,函数是一个对象,因此具有属性和方法!
定义一个属性:
- uniqueInteger.count=2;
- function uniqueInteger(){
- return uniqueInteger.count++;
- }
- var f=function(){
- for(i=0;i<5;i++){
- uniqueInteger();
- }
- return uniqueInteger.count;
- }
- document.write("2+1+1+1+1+1="+f()+"; ");
首先给uniqueInterger这个函数定义一个属性,方法竟然如此简单,就是直接写上这个属性就可以了,然后就可以用了。这个属性在函数的调用期间就像一个全局变量一样,每次调用都保持上次调用的值。(这也符合对象的特点)
再看下面这个例子:
- var f1=function(x){ return x*x;}
- f2.func=f1;
- function f2(){
- return func;
- }
- var f=function(a){
- return f2.func(a);
- }
- document.write("3*3="+f(3)+"; ");
在上一节中我们知道函数可以作为数据,而函数的属性可以被赋上一个值,那么这个值就应该可以是一个函数。
<o:p></o:p>