1 闭包
1.1 概念
闭包指:有权访问另一个函数作用域中变量的函数。
1.2 优缺点
- 优点:闭包函数中的变量不会随着闭包函数销毁而销毁,而是要等到还在使用它的函数销毁时才会销毁;
- 缺点:频繁使用闭包会造成内存泄漏。闭包:会将它的外部函数的作用域的变量也保存在内存中;
1.3 解决闭包造成的内存泄漏
在使用玩闭包函数的变量之后将该变量赋值null
,触发 js 的回收机制。
function f1() {
var a = '变量1' //f1里的这些被f2访问到的变量集合就称为闭包
var f2 = function () {
console.info(a)
}
a = null //在函数执行完之后销毁变量,触发js的回收机制,就不会有内存泄漏的风险了
return f2 // f1就是一个闭包函数,因为他的变量能被f2访问
}
var fn = f1() // 获得f1的变量 //"变量1"