这两者有何不同?

7
我看到以下JavaScript函数的作用完全相同,那么它们之间有什么区别除了语法之外? 这些函数是:
var functionName=function(){
    //some code here
}; 

function functionName(){
    //some code here
} 

我以同样的方式称呼它们:
functionName();

请不要告诉我语法有所不同,除此之外还有其他的区别吗?

1)speed of execution
2)Memory utilization etc.

提前感谢您!


函数表达式 vs 函数声明 - elclanrs
完全重复的内容 https://dev59.com/s3RC5IYBdhLWcg3wUvQS - Bhushan Firake
2个回答

1

这个问题在StackOverflow上已经被回答过很多次了。这只是一种命名方式。因此,从答案中摘取一些要点,我想说:

  1. JavaScript解释器总是将函数声明和变量声明不可见地移动(“提升”)到它们所在的作用域的顶部。函数参数和语言定义的名称已经存在于作用域中。

  2. 优点和缺点:

    给函数命名有一些优点:

    • 元分析的名称。functionInstance.name会显示名称。
    • 更重要的是,名称将在堆栈跟踪中打印出来。
    • 名称还有助于编写自文档或文学代码。

    命名函数表达式有一个缺点:

    • IE对NFE存在内存泄漏问题。
  3. 另一个主要区别

    区别在于functionTwo在脚本块的解析时定义,而functionOne在运行时定义。例如:

    <script>
      // 错误
      functionOne();
    
      var functionOne = function() {
      }
    </script>
    
    <script>
      // 没有错误
      functionTwo();
    
      function functionTwo() {
      }
    </script>
    

参考资料

  1. var functionName = function() {} vs function functionName() {}
  2. JavaScript中命名函数和匿名函数哪个更好?
  3. 揭秘命名函数表达式
  4. 函数声明与函数表达式
  5. var functionName = function() {} vs function functionName() {}

1
谢谢,这解决了我的疑惑! - sandip

0
  1. 第一个是命名函数表达式,应该向调用者返回一些值。
  2. 第二个只是一个函数,你可以选择是否返回值。

我使用了一个没有返回任何值的函数。 - sandip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接