2013-03-05 91 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