闭包
闭包是函数。
闭包(closure)指有权访问另一个函数作用域中变量的函数。
一个作用域可以访问另一个函数内部的局部变量。被访问变量所在函数就形成闭包。
1 闭包定义
-
当嵌套的内部函数引用了外部函数的变量时就产生了闭包。
-
通过chrome工具得知: 闭包本质是内部函数中的一个对象, 这个对象中包含引用的变量属性。
2 闭包的主要作用
-
延伸了变量的作用范围(生命周期)。
-
让函数外部能操作内部的局部变量。
-
保护变量不受外界污染,使其一直存在内存中。
-
写一个闭包程序。
function fn1() { var a = 2; function fn2() { a++; console.log(a); } return fn2; } var f = fn1(); f(); //3 f(); //4
3 闭包应用
-
模块化: 封装一些数据以及操作数据的函数, 向外暴露一些行为。
-
循环遍历加监听。
-
JS框架(jQuery)大量使用了闭包。
4 缺点
- 变量占用内存的时间可能会过长。
- 可能导致内存泄露。
- 解决:
- 及时释放 : f = null; //让内部函数对象成为垃圾对象。