这两者有什么区别?

时间:2013-03-05 04:51:25

标签: javascript jquery function

我看到以下JavaScript函数的工作方式完全相同,那么除了语法之外还有什么区别。 功能是:

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

function functionName(){
    //some code here
} 

我用以下的方式打电话给他们:

functionName();

请不要告诉我语法有所不同,除此之外还有其他差别,如

1)speed of execution
2)Memory utilization etc.

提前致谢!

2 个答案:

答案 0 :(得分:1)

在StackOverflow中已经多次回答过这个问题。这只是命名方式。所以从答案中拿出一些观点,我会说:

  1. 函数声明和变量声明总是被JavaScript解释器无形地移动(“提升”)到其包含范围的顶部。显然,函数参数和语言定义的名称已经存在。

  2. 优点&缺点:

    命名功能有几点好处:

    • 元分析的名称。 functionInstance.name会显示您的姓名。
    • 更重要的是,名称将以堆栈痕迹打印。
    • 名称也有助于编写自我记录或识字代码。

    命名函数表达式

    有一个缺点
    • IE有NFE的内存泄漏
  3. 另一个主要区别

    不同之处在于functionTwo是在脚本块的分析时定义的,而functionOne是在运行时定义的。例如:

    <script>
      // Error
      functionOne();
    
      var functionOne = function() {
      }
    </script>
    
    <script>
      // No error
      functionTwo();
    
      function functionTwo() {
      }
    </script>
    
  4. <强>参考

    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 :(得分:0)

  1. 第一个是命名函数表达式,它应该向调用者返回一些值。
  2. 第二个只是一个功能,无论你是否返回值都取决于你