最近我有人要求我将我的所有代码都包含在一个包含自我的函数中。我知道闭包服务的目的是访问说明符(私有,公共),它们在Javascript中不存在但是关于何时使用的绝对指导当没有必要使用时会非常有帮助。
答案 0 :(得分: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将会被破坏。
使用闭包是一种预防性的最佳实践,可避免名称空间冲突问题,其中两个不同的代码片段使用相同的名称而未实现它。
除非您有特定原因不,否则总是使用它们。例如,如果两段代码需要来访问相同的值 - 但是在使用全局变量之前,您需要非常仔细地思考。