-1

最近有人要求我将我的所有代码包含在一个自包含函数中。我知道闭包的目的是访问说明符(私有,公共),这些说明符在 Javascript 中不存在,而是关于何时使用以及何时使用的绝对指南没必要使用会很有帮助。

4

1 回答 1

1

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

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

// ... elsewhere in the code

(function() {
    var x = 10;
    function button2Click() { /* uses x */ }
}());

如果这两段代码不包含在闭包中,则“x”值 5 将被 10 覆盖,并且 button1Click 将中断。

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

除非您有特定的理由使用它们,否则您应该始终使用它们。例如,如果两段代码需要访问相同的值——但是在使用全局变量之前,您需要非常非常仔细地考虑。

于 2013-10-29T19:15:29.513 回答