1
2
3
4
5
6
7
8
9
10
11
12
function f1(){
var n=999;

function f2(){
console.log(n);
}

return f2
}

var result=f1();
result();

f1函数的返回值是f2函数指针,调用f2函数,f2函数执行时,打印n,f2能获得变量n1的值,因为n的作用域是f1函数。

闭包的含义是f1被调用,f2接着被调用,f2调用的时候调用了f1?

我们设f1是外部函数,f2是内部函数。闭包是一个环境,在外部函数的外部构建了外部函数的环境。

用处

  1. 读取函数内部的变量
  2. 函数内部的变量始终保持在内存中,不会在外层函数被调用后被自动清除

    优点

  3. 变量长期驻留在内存中
  4. 避免全局变量的污染
  5. 私有成员的存在

    缺点

    常驻内存,会增大内存的使用量,使用不当会造成内存泄漏

    特性

  6. 函数套函数
  7. 内部函数可以直接使用外部函数的局部变量或参数
  8. 变量或参数不会被垃圾回收机制回收

参考链接:如何简单理解闭包(Closure)

什么是闭包?以及闭包的优点,缺点,用处,及特性

创建于2023.2.16/15.13,修改于2023.2.16/17.7