在开源的JavaScript框架中能看到很多这样语法结构

(function(){ 

          ...... 

        } 

        )()


比如我最近看的jQuery,及chediter。刚开始的时候我看到这样的结果有点奇怪,它是怎么执行的,
并且这是什么样的语法结构,最近偶尔看闭包的时候,才发现原来这是JavaScript中的匿名函数
(看到这个有点汗,java的匿名类见过,就从来没想到JavaScript中会有匿名函数,也是学的不够牢固)。


现在我们了解到以上是JavaScript匿名函数的语法结构,怎么声明函数,
匿名函数JavaScript是怎么执行的,匿名函数的代码模式。这些问题就是我们接下来要探讨的问题。


第一:怎么声明函数
      1. 函数声明        function test(){ }
      2. 函数表达式      var test = function(){};
         匿名函数(属于2) function(){}  
 3. new关键字       var test = new Function([arguments], Body);


第二:匿名函数怎样执行 

      (function(){ 

  

  // do something... 

})(); 

       其实有两部分构成: 

 (function(){ 

   //..... 

 })  表示为函数的定义 

 ():  表示立即执行匿名函数 

  

 等价于: 

 var test = function(){ 

   //... 

 } //声明匿名类并将匿名函数赋予变量test。  

 test(); 

 第三:匿名函数的代码模式 

       1.错误模式:其无法工作,浏览器会报语法错 

   function(){ 

 //.... 

}(); 

 2.函数字面量:首先声明一个函数对象,然后执行它。 也称为立即执行函数。 

   (function(){ 

 //.... 

})(); 

 

编译一定能通过,第一()是函数定义,而第二个()代表执行第一括号里面的内容 

 3.优先表达式:由于Javascript执行表达式是从圆括号里面到外面,所以可以用圆括号强制执行声明的函数。 

   (function(){ 

 //..... 

}()) 

 4.Void操作符 用void操作符去执行一个没有用圆括号包围的一个单独操作数 

    void function(){  

  alert(1);  

    }()


 
这三种方式是等同的,hedger wang因为个人原因比较喜欢第3种,
而在实际应用中我看到的和使用的都是第2种以及上面提到的 new Funtion( )的定义方式。


灵活的配合var关键字,匿名函数可以有效的保证在页面上写入Javascript,
而不会造成全局变量的污染。也能增加代码的可读写行,减少代码量,提高程序的性能。