JS中的闭包和匿名函数有什么区别

时间:2012-01-23 04:33:02

标签: javascript

JavaScript中的闭包和匿名函数有什么区别

3 个答案:

答案 0 :(得分:4)

闭包机制适用于所有 JavaScript函数,无论是匿名还是非。

我认为这两个概念之间的混淆来自于术语“闭包”的使用,其中作者说过“下面的代码创建一个闭包”,然后给出了一个恰好使用匿名函数的例子。在这种情况下,闭包机制通常是使特定代码片段按预期工作的重要因素,而使用匿名函数而不是命名函数恰好是编码它的便捷方式。阅读这些例子并首次看到“封闭”的人然后误解了这个术语,并继续在他们自己的Stack Overflow或博客文章中错误地使用它,因此混乱蔓延。

答案 1 :(得分:1)

闭包是依赖于命名空间引用的表达式,其中变量被解析(上下文)。匿名函数是在Javascript中形成闭包的一种方式 - 命名函数是另一种。

关于使用非功能块形成闭包的能力有一些讨论,但目前的标准没有规定。

http://jibbering.com/faq/notes/closures/是一个非常好的描述。

答案 2 :(得分:1)

闭包是捕获其环境(它有权访问的变量)的函数

可以从匿名和从命名函数创建both

匿名函数与命名函数的不同之处主要在于它的声明不会使hoisted超出范围。