javascript - 将函数放在括号中会发生什么?

标签 javascript jquery

Possible Duplicate:
What do parentheses surrounding a JavaScript object/function/class declaration mean?

我在 jQuery 插件等中看到括号内的函数。

例如,

(function(args) {
   // ...
})(localVariable);

这到底是做什么的?

最佳答案

您的意思是类似以下内容?:

(function() {
   // ...
})();

这基本上确保了任何“var”声明都是私有(private)的(它们的作用域是它们所在的匿名函数)而不是全局的。例如,考虑:

 var counter = 0;
 window['inc'] = function() {
    return counter++;
 };

对比

 (function() {
    var counter = 0;
    window['inc'] = function() {
       return counter++;
    };
 })();

这两个函数都具有定义一个函数window.inc的效果,该函数返回一个递增的计数器;然而,在第一个版本中, counter 实际上对所有其他模块都是可见的,因为它位于全局范围内,而后者确保只有 window.inc 可以访问计数器

请注意,代码创建了一个函数并立即调用它(这就是最后一个括号的用途)。

关于javascript - 将函数放在括号中会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6591153/

相关文章:

javascript - 使用 JQuery 防止电子邮件输入字段上出现 ","和 ";"

javascript - 地址栏中的 URL 使用 php 或 javascript

jquery - html5输入错误信息

javascript - 表单提交后渲染表单

javascript bootstrap-multiselect 在按钮单击时获取所有选定的值

jquery - 弹出框远程激活触发事件

javascript - Python从<script> html标签内获取数据值

javascript - 服务器端未收到 Extjs 5.0 模型 POST 值(工作 Extjs 4.2)

javascript - 如何在多个数字状态之间振荡和补间?

javascript - 具有相同 id 的 jQuery 多个按钮