闭包

 1 function a() {
 2     var n = 0;
 3     return function b() {
 4         n++;
 5         console.log(n)
 6     }
 7 }
 8 var c = a();
 9 c();
10 c();

b()就是闭包。

闭包就是能够读取其他函数内部变量的函数。

一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中,不会在c()调用后被自动清除。

由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题。所以,在退出函数时,应删除不用的局部变量。(主动把函数赋值为null,就是销毁了该函数,然后释放了该闭包)

原文地址:https://www.cnblogs.com/mxyr/p/9506157.html