什么是闭包?

 javascript函数是将要执行的代码以及执行这些代码的作用域构成的一个综合体。在计算机科学术语里,这种代码和作用域的综合体叫做闭包。所有的javascript函数都是闭包。但就是说,当一个嵌套函数被导出到它所定义的作用域外时,这种闭包才是有趣的。当一个嵌套的函数以这种方式使用的时候,它常常明确地叫做一个闭包。

在Javascript中闭包(Closure),有两个特点:

  • 作为一个函数变量的一个引用 - 当函数返回时,其处于激活状态。
  • 一个闭包就是当一个函数返回时,一个没有释放资源的栈区。

uniqueID = funcrtion(){

    if(!arguments.callee.id) arguments.callee.id = 0;
    return arguments.callee.id++;
};
这种方法问题在于,任何人都可以更改uniqueID.id。
为了防止这样的问题:
uniqueID = (function(){
    var id = 0;
    return function(){
        return id++;
    }
})();
原文地址:https://www.cnblogs.com/zhaozhilu/p/2953671.html