js 闭包的理解
变量的作用域,作用域链
变量的作用域无非就是两种:全局变量和局部变量。函数内部可以直接读取全局变量.
垃圾回收机制
在Javascript中,如果一个对象不再被引用,那么这个对象就会被GC回收。如果两个对象互相引用,而不再被第3者所引用,那么这两个互相引用的对象也会被回收
闭包的理解
闭包就是将函数内部和函数外部连接起来的一座桥梁,函数外部能够访问内部的包变量
作用:
- 一个是前面提到的可以读取函数内部的变量,
- 另一个就是让这些变量的值始终保持在内存中。
由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。 闭包会在父函数外部,改变父函数内部变量的值。把闭包当作它的公用方法这时一定要小心,不要随便改变父函数内部变量的值。
闭包例子,每次调用自加一:
function a() {
var i = 0;
function b() { alert(++i); }
return b;
}
var c = a();
c();