什么是闭包?
闭包就是能够读取其他函数内部变量的函数。
function fl(){
var n = 999;
function f2(){
alert(n)
}
return f2;
}
var result = f1();
ressult(); // 999
只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”。所以,本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
使用闭包的注意点
(1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。
JS垃圾回收机制
JS的垃圾回收机制是为了以防内存泄漏,内存泄漏的含义就是当已经不需要某块内存时这块内存还存在着,垃圾回收机制就是间歇的不定期的寻找到不再使用的变量,并释放掉它们所指向的内存。
回收方式
- 标记清除
- 引用计数。