2013-03-05 46 views
7

我看到以下JavaScript函數完全相同,那麼它們之間的區別是而不是語法。 的功能是:這兩者有什麼區別?

var functionName=function(){ 
    //some code here 
}; 

function functionName(){ 
    //some code here 
} 

我打電話給他們以同樣的方式爲:

functionName(); 

請不要」告訴我有語法不同,除此之外有沒有像

1)speed of execution 
2)Memory utilization etc. 
任何區別

在此先感謝!

+0

函數表達式VS函數聲明 – elclanrs 2013-03-05 04:54:42

+0

Exaact重複http://stackoverflow.com/questions/336859/javascript-var-functionname-function-vs-function-functionname – 2013-03-05 04:55:37

回答

1

這已經回答了很多次。這只是命名方式。因此,從問題的答案採取了一些點,我會說:

  1. 函數聲明和變量聲明總是移動(「升起」)無形其包含範圍由JavaScript解釋器的頂部。顯然,函數參數和語言定義的名稱已經存在。

  2. 優點&缺點:

    有幾個優點命名功能:

    • 進行薈萃分析的名稱。 functionInstance.name會顯示你的名字。
    • 更重要的是,該名稱將打印在堆棧跟蹤中。
    • 名稱還有助於編寫自我記錄或識字代碼。

    有一個單一的缺點命名函數表達式

    • IE具有用於NFE
  3. 另一個主要區別

    的區別在於functionTwo定義內存泄漏在腳本塊的分析時,而在運行時定義functionOne我。例如:

    <script> 
        // Error 
        functionOne(); 
    
        var functionOne = function() { 
        } 
    </script> 
    
    <script> 
        // No error 
        functionTwo(); 
    
        function functionTwo() { 
        } 
    </script> 
    

參考

  1. var functionName = function() {} vs function functionName() {}
  2. Are named functions or anonymous functions preferred in JavaScript?
  3. Named function expressions demystified
  4. Function Declarations vs. Function Expressions
  5. var functionName = function() {} vs function functionName() {}
+1

謝謝,這清除了我的懷疑! – sandip 2013-03-05 05:09:27

0
  1. 第一個是命名函數表達式,它應該返回一些值給調用者。
  2. 第二屆一個僅僅是一個函數,它是高達你是否在你StackOverflow的返回值的
+0

我已經使用1)功能,而不返回任何值 – sandip 2013-03-05 05:00:38