js 闭包的理解

变量的作用域,作用域链

变量的作用域无非就是两种:全局变量和局部变量。函数内部可以直接读取全局变量.

垃圾回收机制

在Javascript中,如果一个对象不再被引用,那么这个对象就会被GC回收。如果两个对象互相引用,而不再被第3者所引用,那么这两个互相引用的对象也会被回收

闭包的理解

闭包就是将函数内部和函数外部连接起来的一座桥梁,函数外部能够访问内部的包变量

作用:

  1. 一个是前面提到的可以读取函数内部的变量,
  2. 另一个就是让这些变量的值始终保持在内存中。

由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。 闭包会在父函数外部,改变父函数内部变量的值。把闭包当作它的公用方法这时一定要小心,不要随便改变父函数内部变量的值。

闭包例子,每次调用自加一:

function a() {
 var i = 0;
 function b() { alert(++i); }
 return b;
}
var c = a();
c();

results matching ""

    No results matching ""