我开始阅读:http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth
他们提到匿名关闭:
这是使一切成为可能的基本结构,而且 真的是JavaScript的最佳功能。我们只是创造 匿名函数,并立即执行。所有的代码 在函数内部运行的是一个闭包,它提供了 在我们的应用程序的整个生命周期中,隐私和州。
(function () {
// ... all vars and functions are in this scope only
// still maintains access to all globals
}());
答案 0 :(得分:3)
未在闭包中定义的变量进入窗口变量并且是全局变量。
示例:
var SOME_CONSTANT = 4;
function foo() {
var c = SOME_CONSTANT;
console.log( c );
}
foo();
如果您有此代码,SOME_CONSTANT将对所有文件和代码在内联脚本等内运行是全局的,这可能是不可取的。
您可以使用自调用闭包将变量仅保留在此闭包内:
( function() {
var SOME_CONSTANT = 4;
function foo() {
var c = SOME_CONSTANT;
console.log( c );
}
foo();
} () );
这样,您可以拥有仅对该模块具有全局变量的模块。例如,通过将每个文件的代码包含在这样的匿名函数中。
答案 1 :(得分:1)