什么是闭包
一个函数内部有一个函数可以 内部函数可以访问到外部函数的变量和参数
闭包的优缺点
- 优点
避免全局污染;
可以让一个变量长期驻扎在内存中不被释放;
私有成员存在,无法被外部调用,只可以自己内部使用 - 缺点
一个变量长期驻扎在内存中不被释放,在ie下会造成内存溢出;
滥用闭包在其他浏览器下,页面会变得缓慢
垃圾回收机制
- 标记清除
js会对变量做一个标记YES NO的标记,
当变量在某个环境下被使用则标记为YES,当超出该环境,则为NO,js引擎会在一定时间间隔来进行扫描,会对有NO的标签进行释放 - 引用记数
对于JS中引用类型的变量,采用引用计数的内存回收机制,
当一个引用类型的变量赋值给另外一个变量,引用计数会+1;而当其中有一个变量不再等于值时,引用计数会-1,
如果引用计数为0,则js引擎会将其释放掉
function show(n) {
return function () {
n++;
console.log(n);
}
}
var fn = show(10);
fn();
fn();
fn();
网友评论