关于javascript:这两者有什么区别?

What is the difference between these two?

本问题已经有最佳答案,请猛点这里访问。

我看到下面的javascript函数的工作方式完全相同,那么它们之间除了语法之外还有什么区别。功能包括:

1
2
3
4
5
6
7
var functionName=function(){
    //some code here
};

function functionName(){
    //some code here
}

我用同样的方式称呼他们:

1
functionName();

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

1
2
1)speed of execution
2)Memory utilization etc.

事先谢谢!


在StackOverflow中,这已被多次回答。这只是命名的方式。所以从答案中总结出一些观点,我想说:

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

  • 优点和缺点:

    命名函数有几个优点:

    • 元分析的名称。functionInstance.name会显示你的名字。
    • 更重要的是,名称将打印在堆栈跟踪中。
    • 名字也有助于编写自我记录或识字代码。

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

    • IE有NFE内存泄漏
  • 另一个主要区别

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      // Error
      functionOne();

      var functionOne = function() {
      }



      // No error
      functionTwo();

      function functionTwo() {
      }
  • 工具书类

  • var functionname=function()vs function functionname()
  • javascript中首选命名函数还是匿名函数?
  • 已命名函数表达式已解除定义
  • 函数声明与函数表达式。
  • var functionname=function()vs function functionname()

  • 第一个是命名函数表达式,它应该向调用者返回一些值。
  • 第二个只是一个函数,它取决于你是否返回值