一:js闭包及解决办法
闭包在JavaScript高级程序设计(第3版)中是这样描述:闭包是指有权访问另一个函数作用域中的变量的函数。
闭包的作用:
1.访问其他函数内部变量
2.保护变量不被内存回收机制回收
3.避免全局变量被污染 方便调用上下文的局部变量 加强封装性
缺点:闭包会保存函数中的变量在内存中,导致内存消耗大,可能会造成内存泄漏
什么是内存泄漏
首先,需要了解浏览器自身的内存回收机制。
每个浏览器会有自己的一套回收机制,当分配出去的内存不使用的时候便会回收;内存泄露的根本原因就是你的代码中分配了一些‘顽固的’内存,浏览器无法进行回收,如果这些’顽固的’内存还在一直不停地分配就会导致后面所用内存不足,造成泄露。
function a(){
var m = 2;
function b(){
alert(m);
}
return b;
}
let func=a();
func() // 2
问题1、内存泄漏
如何避免闭包引起的内存泄漏
1,在退出函数之前,将不使用的局部变量全部删除或者变量赋值为null.
2,避免变量的循环赋值和引用。
这段代码会导致内存泄露
function(){