function a(){ var n = 0; this.fun = function () { n++; console.log(n); }; } var c = new a(); c.fun(); //1 c.fun(); //2
闭包就是能够读取其他函数内部变量的函数。在 js 中只有函数内部的子函数才能读取局部变量。所以可以简单的理解为:定义在内部函数的函数。
用途主要有两个:
1)前面提到的,读取函数内部的变量。
2)让变量值始终保持在内存中。
使用闭包 主要是为了设计私有的变量和方法,可以避免全局变量污染,缺点是闭包会常驻内存,增大内存使用量,使用不当会造成内存泄漏