我读了一些关于闭包的文章,到处都看到了,但是没有明确的解释它是如何工作的-每当我被告知要使用它时……:
// Create a new anonymous function, to use as a wrapper
(function(){
// The variable that would, normally, be global
var msg = "Thanks for visiting!";
// Binding a new function to a global object
window.onunload = function(){
// Which uses the 'hidden' variable
alert( msg );
};
// Close off the anonymous function and execute it
})();
好的,我看到我们将创建一个新的匿名函数,然后执行它。所以之后,这个简单的代码应该可以工作了(并且可以):
(function (msg){alert(msg)})('SO');
我的问题是这里发生了什么魔术?我以为当我写:
(function (msg){alert(msg)})
然后将创建一个新的未命名函数,例如函数“”(msg)...
但是,为什么这不起作用?
(function (msg){alert(msg)});
('SO');
为什么它需要在同一行?
您能给我指出一些帖子还是给我一个解释?
(function (msg){alert(msg)})('SO');
完全独立运行。它与您之前发布的其他匿名函数无关。这是两个完全独立的匿名函数。您必须立即调用一个匿名函数,因为它没有名称,以后也无法引用。