JavaScript-函數篇-003(JavaScript中的匿名函數)

在開源的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,
而不會造成全局變量的污染。也能增加代碼的可讀寫行,減少代碼量,提高程序的性能。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章