这两者有啥区别? [复制]

Posted

技术标签:

【中文标题】这两者有啥区别? [复制]【英文标题】:What is the difference between these two? [duplicate]这两者有什么区别? [复制] 【发布时间】:2013-02-19 09:33:56 【问题描述】:

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

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

function functionName()
    //some code here
 

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

functionName();

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

1)speed of execution
2)Memory utilization etc.

提前致谢!

【问题讨论】:

函数表达式与函数声明 完全重复***.com/questions/336859/… 【参考方案1】:

在 *** 中已经多次回答了这个问题。这只是命名的方式。因此,从答案中提取一些观点,我会说:

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

    优点和缺点:

    命名函数有几个好处:

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

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

    IE 存在 NFE 内存泄漏

    另一个主要区别

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

    <script>
      // Error
      functionOne();
    
      var functionOne = function() 
      
    </script>
    
    <script>
      // No error
      functionTwo();
    
      function functionTwo() 
      
    </script>
    

参考文献

    var functionName = function() vs function functionName() Are named functions or anonymous functions preferred in JavaScript? Named function expressions demystified Function Declarations vs. Function Expressions。 var functionName = function() vs function functionName()

【讨论】:

谢谢你这解决了我的疑问!【参考方案2】:
    第一个是命名函数表达式,它应该向调用者返回一些值。 第二个只是一个函数,是否返回值由你决定

【讨论】:

我使用了 1) 函数而不返回任何值

以上是关于这两者有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

参数和参数有啥区别? [复制]

这两者有啥区别……?

XML 属性:match_parent 和 fill_parent。似乎两者都是一样的。它们之间有啥区别吗? [复制]

这两者在位操作方面有啥区别?

servlet和jsp有啥区别? [复制]

AWS 与 Lightsail,有啥区别? [复制]