Javascript 何时使用自包含函数(闭包)以及何时不使用自包含函数

Javascript 何时使用自包含函数(闭包)以及何时不使用自包含函数,javascript,closures,Javascript,Closures,最近,我的某人要求我将所有代码包含到一个自包含函数中。我知道闭包用于访问说明符(private、public)Javascript中没有,但是关于何时使用和何时不必使用的绝对指导原则非常有用。考虑两个自动执行闭包。当它们都决定使用相同的变量名而没有意识到时会发生什么?没什么不好的,因为变量包含在闭包中 (function() { var x = 5; function button1Click() { /* uses x */ } }()); // ... elsewhere

最近,我的某人要求我将所有代码包含到一个自包含函数中。我知道闭包用于访问说明符(private、public)Javascript中没有,但是关于何时使用和何时不必使用的绝对指导原则非常有用。

考虑两个自动执行闭包。当它们都决定使用相同的变量名而没有意识到时会发生什么?没什么不好的,因为变量包含在闭包中

(function() {
    var x = 5;
    function button1Click() { /* uses x */ }
}());

// ... elsewhere in the code

(function() {
    var x = 10;
    function button2Click() { /* uses x */ }
}());
如果这两段代码不包含在闭包中,“x”值5将被10覆盖,button1Click将中断

使用闭包是一种预防性的最佳实践,可以避免两段不同代码使用相同的名称而没有意识到名称空间冲突的问题


除非你有特别的理由不使用,否则你应该一直使用它们。例如,如果两段代码需要访问相同的值,那么在使用全局变量之前,您需要非常仔细地思考。

您是否向您的经理询问了他的推理?可能最常见的原因是将所有变量都排除在全局范围之外。对于@LegoStormtroopr,这可能是一个很好的问题。我同意你的看法。但我想在这个设计问题上拥有行业级的专业知识。谢谢