我在这里阅读函数声明和函数表达式之间的区别
JavaScript 中的函数表达式和声明有什么区别?
var functionName = function() {} vs function functionName() {}
我开始了解一个在解析时定义而另一个在运行时定义的区别。但我的好奇心是使用哪些,不使用哪些,以及为什么一个会优先于另一个。
真的很少。 function foo(x)
只是foo = function(x)
的简写。 添加var
会像Javascript中的任何名称一样限制范围。
这是关于该主题的详细文章。
仅供参考,即使在函数表达式中,您也可以在括号前有一个函数名称:
var functionName = function functionName() { ... }
使用包含函数名称的表单(介于 function
和 ()
之间)的一个原因是,调试器可以在显示堆栈跟踪时帮助您告诉您发生了什么函数。
使用函数表达式的一个原因是,在将函数放入命名空间时具有更大的灵活性。因此,如果您使用命名空间将 javascript 组织到模块中,则可能需要使用函数表达式。
由于这些原因,上述形式(带有函数名称的函数表达式)可以被认为是两全其美的。但它的缺点是重复(干!