JavaScript中的闭包和匿名函数有什么区别
答案 0 :(得分:4)
闭包机制适用于所有 JavaScript函数,无论是匿名还是非。
我认为这两个概念之间的混淆来自于术语“闭包”的使用,其中作者说过“下面的代码创建一个闭包”,然后给出了一个恰好使用匿名函数的例子。在这种情况下,闭包机制通常是使特定代码片段按预期工作的重要因素,而使用匿名函数而不是命名函数恰好是编码它的便捷方式。阅读这些例子并首次看到“封闭”的人然后误解了这个术语,并继续在他们自己的Stack Overflow或博客文章中错误地使用它,因此混乱蔓延。
答案 1 :(得分:1)
闭包是依赖于命名空间引用的表达式,其中变量被解析(上下文)。匿名函数是在Javascript中形成闭包的一种方式 - 命名函数是另一种。
关于使用非功能块形成闭包的能力有一些讨论,但目前的标准没有规定。
http://jibbering.com/faq/notes/closures/是一个非常好的描述。
答案 2 :(得分:1)