概念
通俗来讲:一个函数可以访问另一个函数中的私有变量的函数称作为闭包。
专业概念:一个闭包可以访问并操作其函数以外部用域中变量的函数。即外部函数执行完成,只要闭包存在,就可以继续对外部作用域的访问。
形成因素
这里我们仔细想一下,闭包的使用场景。
1)函数嵌套函数
2)内部函数可以访问外部作用域变量
3)外部函数返回内部函数
作用(优点)
作用及好处,这里我们描述的是使用闭包的好处:
1)封装数据:闭包可以将函数或者私有变量封装在同一作用域下,避免全局作用域的污染,
2)保持状态:函数在多次调用时,保持局部状态的值
3)保存私有变量:闭包可以在函数内创建私有变量,创建的私有变量被保存在内存当中。
4)延迟执行:外部函数执行完毕后执行内部函数,实现了延迟属性。
5)高阶函数
6)装饰器:闭包可以实现装饰器,在不修改原有的函数情况下,为其添加额外的功能
缺点:
由于闭包 有可以保存私有变量的特性,在使用时不会被垃圾回收机制所清理,影响用户使用性能,使用完毕后需要手动清除,避免内存溢出。
优点和缺点是对立的,也是相辅相成的。