当一个嵌套的内部(子)函数,引用了外部(父)函数的变量或函数时就产生了闭包。

    1. 闭包的作用:
    • 使函数内部的变量在函数执行完后,仍然存活于内存当中,延长局部变量的生命周期
    • 让函数外部可以操作函数内部的数据
    1. 常见的闭包
    • 将函数作为另一个函数的返回值
    • 将函数作为实参传递给另一个函数(回调函数)
    1. 闭包的生命周期
    • 当外部函数被调用后,内部函数定义执行完毕产生内部函数对象,闭包在内部函数对象中,当没有任何变量引用这个函数对象时,闭包死亡
    1. 闭包的应用:常用来封装 js 模块
    2. 闭包的缺点:
    • 函数执行完后,内部变量没有释放占用内存空间时间过长,容易造成内存泄漏
    • 非必要不使用闭包,如果使用要及时释放资源