希望能澄清一下...我有两个问题。
下面的函数创建了一个闭包。
function Foo(message){
var msg = message;
return function Bar(){
this.talk = function(){alert(msg); }
}
};
问题:Foo
和Bar
中哪一部分是闭包函数?
我一直以为闭包函数是Foo
,因为它在Bar
返回后关闭了Bar
。
接下来...
以下是匿名函数的定义:
()();
Q:这个匿名函数内的内部函数也是闭包吗?
(function(){ /* <-- Is this function also a closure? */ })();
<br/>
标签。而且,()();
绝对不是匿名函数的定义。 - Pointy()();
没有特殊的名称。第一个()
是分组运算符,强制内容被视为表达式。这用于将函数定义强制为表达式而不是语句。第二个()
在这种情况下调用函数,但如果评估分组运算符的结果不是函数,则会出错。匿名函数就是没有名称的函数。 - Felix Kling