javascript - 以这种方式将参数传递给匿名函数的目的是什么?

标签 javascript jquery google-closure-compiler

<分区>

Possible Duplicate:
How do JavaScript closures work?

我正在玩弄 Google Closure Compiler , 放入随机代码看看它会做什么。

它重写了我的一个函数,看起来像这样:

(function(msg) { console.log(msg); })("Hello World!");​​​​​​​

"Hello World" 是作为 msg 传递给它前面的匿名函数的参数。我看了一会儿,以为我在 jQuery 插件中看到了类似的东西,看起来像这样:

(function( $ ) {
  ...
})(jQuery); 

在与 $ 的冲突范围内,这对我来说更有意义。但是,将参数传递给这样的匿名函数的主要原因或目的是什么?为什么不简单地将参数定义为函数中的变量?像这样编写函数有任何性能或灵 active 优势吗?

最佳答案

还有一个显着差异也与范围有关。以下代码:

(function(msg) { console.log(msg); })("Hello World!");​​​​​​​

在某些情况下,在 namespace 污染方面比这更干净:

var msg = "Hello World!";
console.log(msg);

因为第二个代码在不再需要变量后留下变量,但可能会干扰代码的其他部分。

当您在任何其他函数之外执行上述代码时,这一点尤为重要:在这种情况下,msg 变量将作为全局变量在页面上随处可用。

关于javascript - 以这种方式将参数传递给匿名函数的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12698546/

相关文章:

javascript - 按钮点击警报未触发

javascript - Google Closure Compiler 内联了一个重复使用的私有(private)属性——一个缺陷还是我遗漏了什么?

javascript - 闭包编译器和奇怪的前置代码

javascript - 检测加载了 JavaScript 的页面

javascript - 如何在 Express 应用程序中使用纯 JavaScript 进行重定向

javascript - 无法动态导入 TensorFlow.js

php - 如何根据给定时间自动重定向页面?我应该使用 JavaScript 吗?如何?

jquery - 将 CSS3 或 Jquery 转换添加到幻灯片

Visual Studio 中的 JavaScript - 闭包样式注释

javascript - RequireJs 没有正确加载依赖项