函数嵌套函数 函数内部能够引用外部的参数和变量 参数和变量不会被垃圾回收机制回收
具体做用是有权访问函数内部的变量,最多见的就是函数内部建立另外一个函数,经过另外一个函数访问这个函数的局部的变量。
缺点:就是常驻内存,会增大内存的使用量,使用不当会形成内存泄露。
通常函数执行完毕,局部活动对象就会被销毁,内存中仅仅保存全局做用域,可是闭包会长期驻扎在内存。javascript
在javascript中,若是一个对象再也不被引用,那么这个对象就会被GC回收;(Garbage Collection),计算机科学中一种自动释放再也不被使用的内存空间的机制。
若是两个对象互相引用,而再也不被第3者所引用,那么这两个互相引用的对象也会被回收。java
var count = 0; function testCount(){ count++; console.log(count); } testCount();//result 1 testCount();//result 2
function testCount(){ var count=0; count++; console.log(count); } testCount();//result 1 testCount();//result 1 //到这里会问玩毛线呢 这个咱们懂 I know。 我只是想经过这两个例子来讲明闭包的用处和好处。
function testCount(){ var count=0; return function(){ count++; console.log(count); } } var plus = testCount(); //函数赋值给变量 plus(); //plus函数调用一次,结果为1,至关于testCount()(); plus(); //plus调用第二次,结果为2,实现了局部变量累加了。 //闭包会使变量始终保存在内存中,若是使用不当会增大内存消耗。