这两者有啥区别? [复制]
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) 函数而不返回任何值以上是关于这两者有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章