在平常的开发中,总有一些方法我们在不同的地方都有用的,因此我们会把这些方法封装起来。当我们需要在开发一个功能的时候需要用到一个组合函数(多个函数之间有联系,即有一个或多个共同的全局变量)且这个组合函数需要在多个地方被调用到。若是简单的将这个组合函数设置成全局函数其共同的变量设置为全局变量的话便会发现一个问题:我在A功能引用了这个组合函数,引用结束后这个组合函数的全局变量global获得了一个数据a,当我们在B功能又触发了这个组合函数,全局变量global被修改成了b,如此而来,当我们便失去了数据a。运用闭包的方法能够很好的解决这个问题,例子如下:
//代码实现两个各种“独立”的计数器 function createCounter() { var counter = 0; return function () { counter ++; console.log("Number of events: " + counter); } } var counter1 = createCounter(); var counter2 = createCounter(); counter1();//Number of events: 1 counter1();//Number of events: 2 counter2();//Number of events: 1 counter1();//Number of events: 3