函数的运用

   在JavaScript里,函数也算是一种数据类型。不同于int、string、float等基本型,也不属于object等引用类型,函数,即function是一种特殊的对象。

一、函数的基本写法

      你可以把function当成如java中的方法一样。

1 function fun_name(){  
2        alert(1111);  
3     }</span>  

       调用它:

1 <script>  
2    window.onload=fun_name();  
3 </script>

     也可以当成一个普通的数据类型一般,赋给一个变量,

    1如:

1 <script>  
2     function fun_name(){  
3       alert(1111);  
4     }  
5     var fun =  fun_name();  
6 </script>

      2甚至也可以这样写:

1    <script>  
2         var fun = function(){  
3           alert(2);  
4         }  
5    </script>

     3你还能把function当成一个object,需要new之后,让系统分配给它一个内存之后才能使用它:

1 <script>  
2         function fun_name(arg){  
3             this.arg = arg;  
4             alert(this.arg);  
5         }  
6         var fun = new fun_name(2);  
7  </script>

    上面所说的3中方法,1就是我们常用的经典型,2我们则称之为函数字面量3我们就以它的实现方法称之为构造函数

    如2一般没有函数名称的函数,我们一般称之为匿名函数


二、匿名函数的代码模式

    如果你经常看Jquery,则会发现在Jquery中大量用到一下这种写法。

1function(){  
2        alert(11);  
3       })(); 

    其中这是匿名函数的几种代码模式之一。

    通常我们这样写

1 var fun = function(){  
2   alert(111);  
3 }

不会有任何执行结果,这只是一个单纯的赋值。

    想让匿名函数能自动执行,我们可以参照一下几种代码模式。

    1一种就是上述所写的那样,先写一个函数字面量,然后执行它。

1function(){  
2    alert(11);  
3   })(); 

    2还有一种优先执行法,用圆括号强制执行。

1function(){  
2        alert(11);  
3    }()) 

   3此外还有一个void操作符

1    void funtion(){  
2        alert(111);  
3     } 

 

三、函数声明和函数表达式   

JavaScript里的函数声明与函数表达式是有区别的。在JavaScript中有一个叫做函数提升的过程,即在执行时,会首先执行函数声明,使其在执行代码时可以用到。

如:

1 alert(sum(1,2));
2 function sum(num1,num2){
3      return num1+num2;
4 }

这段代码是能够完美执行的。

但函数表达式则不一样:

alert(sum(1,2));
var sum = function(num1,num2){
    return num1 + num2;
}

因为函数表达式在执行到时才被编译,所以在alert中还不能调用sum函数,最终导致报错。
除此之外,函数声明与函数表达式等价的。

关于JavaScript的函数运用,如果想知道更详细,还可以参考《用函数式编程技术编写优美的 JavaScript》


    这篇只是我的学习总结,如果错误请各位指点。

原文地址:https://www.cnblogs.com/nonkicat/p/2480946.html