JavaScript学习笔记-----函数

1       函数

1.1    函数的定义和调用

函数定义有以下几种方式:

1.1.1   最普通的定义方式

js 代码
  1.   
  2.   
  3. "Content-Type" content="text/html; charset=UTF-8">   
  4.   
  5.   
  6.   
  7. "JavaScript">   
  8. function square(x){   
  9.    return x*x;   
  10. }   
  11. var a=square(4);   
  12. document.write(a);   
  13.   
  14.   
  15.   

Java等高级语言一样定义和调用函数的方法。

1.1.1   嵌套函数

JS中函数竟然是可以嵌套的。

如下例所示:

js 代码
  1. function m(a,b){   
  2.    function square(x){   
  3.        return x*x;   
  4.    }   
  5.   
  6.    return a+square(b);   
  7.   
  8. }   
  9.   
  10. document.write("2+3*3="+m(2,3));   

在函数里面可以写函数,神奇的JS~

 

1.1.1   Function()构造函数

js 代码

  1. var f=new Function("x","y","return x*y");   
  2.   
  3. document.write("2*3="+f(2,3));   

 有点像实例化一个类,可以有n个字符串参数,前面n-1个代码函数的参数,最后一个是函数体。

   这个函数实际上就等价于:

   funtion f(x,y){

        Return x*y;

   }

   运行结果是:2*3=6;

1.1.1   函数直接量

    这种定义方法在成熟的产品化的JS库中十分常见,但是对于初学者而言却不常见。

js 代码
  1. var f2=function(x) { return x*x};   
  2. document.write("3*3="+f2(3));   

 

1.1.1   递归调用

js 代码

  1. function factorial(x){   
  2.    if (x<=1)   
  3.       return 1;   
  4.    return x*factorial(x-1);   
  5. }   
  6.   
  7. document.write("3!="+factorial(3));   

输出结果是:3!=6

给函数的功能就是计算一个数的阶乘,如3

1.1    作为数据的函数

js 代码
  1.   
  2.   
  3. "Content-Type" content="text/html; charset=UTF-8">   
  4.   
  5.   
  6.   
  7. "JavaScript">   
  8. function square(x){   
  9.    return x*x;   
  10. }      
  11.   
  12. var a=square(4);   
  13. var b=square;   
  14. var c=b(5);   
  15. document.write(c);   
  16.   
  17.   
  18.   

很神奇,定义一个叫做square的函数,然后将它赋值给一个变量b,这个变量就具有square这个函数的功能了,也就等于是这个函数了。

 

函数作为数据,意味着一个函数可以作为另一个函数的参数!

比如:

js 代码
  1. function add(x,y) { return x+y; }   
  2. function multiply(x,y) {return x*y};   
  3. function operate(operator,operand1,operand2){   
  4.     return   operator(operand1,operand2);   
  5. }   
  6.   
  7. document.write("2+3*4="+operate(add,2,operate(multiply,3,4)));   

真的是好神奇,我们定义了两个函数,一个是加法add,一个是乘法multiply,又定义了一个函数叫做operate,也就是操作,它有三个参数,注意第一个参数就是那个函数名!函数也可以作为一个参数传到operate这个函数里,这个参数就代表了这个函数!

 

1.1    函数是对象

JS中,函数是一个对象,因此具有属性和方法!

定义一个属性:

js 代码
  1. uniqueInteger.count=2;   
  2.   
  3. function uniqueInteger(){   
  4.    return uniqueInteger.count++;   
  5. }   
  6.   
  7. var f=function(){     
  8.    for(i=0;i<5;i++){   
  9.        uniqueInteger();   
  10.    }   
  11.   
  12.    return uniqueInteger.count;   
  13. }   
  14. document.write("2+1+1+1+1+1="+f()+";     ");   

首先给uniqueInterger这个函数定义一个属性,方法竟然如此简单,就是直接写上这个属性就可以了,然后就可以用了。这个属性在函数的调用期间就像一个全局变量一样,每次调用都保持上次调用的值。(这也符合对象的特点)

再看下面这个例子:

js 代码
  1. var f1=function(x){ return x*x;}   
  2. f2.func=f1;   
  3.   
  4. function f2(){   
  5.    return func;   
  6. }   
  7.   
  8. var f=function(a){   
  9.     return f2.func(a);   
  10. }   
  11. document.write("3*3="+f(3)+";     ");   

在上一节中我们知道函数可以作为数据,而函数的属性可以被赋上一个值,那么这个值就应该可以是一个函数。

你可能感兴趣的:(JavaScript学习笔记-----函数)