【发布时间】:2012-08-20 14:26:00
【问题描述】:
想在这里直截了当...所以我有 2 个问题
下面的函数创建一个闭包。
function Foo(message){
var msg = message;
return function Bar(){
this.talk = function(){alert(msg); }
}
};
问:哪个函数是闭包,Foo 或 Bar?
我一直认为闭包是Foo,因为一旦返回Bar,它就会关闭Bar。
下一步...
下面是匿名函数的定义:
()();
问:这个匿名函数中的内部函数也是闭包吗?
(function(){ /* <-- Is this function also a closure? */ })();
【问题讨论】:
-
您的问题中不需要那些
<br/>标记。另外,()();绝对不是匿名函数的定义。 -
@Pointy 谢谢,总是有人告诉我 ()();是一个匿名函数。如果不是,它叫什么?
-
()();没有特殊名称。第一个()是分组运算符,它强制将内容视为表达式。这用于强制函数定义为表达式而不被视为语句。在这种情况下,第二个()调用了该函数,但如果评估分组运算符的结果不是函数,则会出错。匿名函数只是一个没有名字的函数。
标签: javascript closures