我阅读了一些有关闭包的帖子,发现到处都有这个东西,但是没有清晰的解释它是如何工作的 - 每次我只被告知使用它...
// 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)})
那么一个新的未命名函数将会被创建,例如 function ""(msg) ...
但为什么这样不起作用呢?
(function (msg){alert(msg)});
('SO');
为什么它需要在同一行上?
您能否指出一些帖子或给我解释一下?
(function (msg){alert(msg)})('SO');
这行代码可以独立运行,与你之前发布的另一个匿名函数没有任何关系。它们是两个完全独立的匿名函数。由于匿名函数没有名称且无法在之后引用,因此必须立即调用匿名函数。 - Octopus