7

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

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

function functionName(){
    //some code here
} 

我以与以下方式相同的方式调用它们:

functionName();

请不要告诉我语法不同,除此之外还有什么不同吗

1)speed of execution
2)Memory utilization etc.

提前致谢!

4

2 回答 2

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>
    

参考

  1. var functionName = function() {} vs function functionName() {}
  2. JavaScript 中首选命名函数还是匿名函数?
  3. 命名函数表达式揭秘
  4. 函数声明与函数表达式
  5. var functionName = function() {} vs function functionName() {}
于 2013-03-05T04:55:22.257 回答
0
  1. 第一个是命名函数表达式,它应该向调用者返回一些值。
  2. 第二个只是一个函数,是否返回值取决于您
于 2013-03-05T04:53:47.500 回答