可能是重复问题:
JavaScript闭包如何工作?
我在使用Google Closure Compiler时做了一些随意的实验,看看它会做什么。
它将我的一个函数重写成了以下样子:
(function(msg) { console.log(msg); })("Hello World!");
代码中显示"Hello World"
作为参数msg
传递给了其前面的匿名函数。我仔细看了一会儿,发现在类似于 jQuery 插件中也有类似的写法:
(function( $ ) {
...
})(jQuery);
对于与$
的冲突,现在我更加理解了。但是像这样将参数传递给匿名函数的主要原因或目的是什么?为什么不只是在函数内定义这些参数作为变量呢?编写此类函数是否具有性能或灵活性优势?
console.log("hello");
。但通常是为了创建一些本地变量,这些变量仅可由在内部创建并导出的某些函数访问。 - I Hate Lazyvar
字符。 - I Hate Lazya
,从而减小应用程序的总大小。 - Mike Grabowski