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/