Go
Go

JS 闭包的理解

当内部函数以某一种方式被任何一个外部函数作用域访问时,一个闭包就产生了。

闭包最大用处有两个:

  1. 可以读取函数内部的变量,
  2. 让这些变量的值始终保持在内存中
1
2
3
4
5
6
7
8
9
10
11
12
13
function outer(){
var index = 1;
function inner(){
index++;
return index;
}
return inner;
};
var test = outer();
test(); // 2
test(); // 3
test(); // 4

inner被全局变量test代理,而函数inner的执行依赖outer所以outer也被保存在内存中。

闭包的优点:

  1. 避免全局变量的污染。
  2. 保护函数内的变量安全,加强了封装性。
  3. 保存变量。

闭包的缺点:

  1. 由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。

解决方法是,在退出函数之前,将不使用的局部变量全部删除。

支持一下
扫一扫