前端嘛 Logo
前端嘛

闭包

闭包是一个函数以及其捆绑的周边环境状态的引用的组合。换言之,闭包是一个函数的封闭空间,内部存储了在其它地方会引用到的该函数作用域中的值。在一个函数中使用了其外部函数中的变量,就会创建一个闭包,用来存储外部函数中的变量。

特性

利用闭包的特性,我们可以手动创建闭包,从而让闭包中的数据成为函数的私有数据。利用垃圾回收机制,可以延长闭包及相应变量、对象等的存活时间。但是与此同时也需要注意及时手动销毁不需要的函数引用,让内存空间及时回收,以免造成内存泄漏。

应用场景

  1. 函数柯里化:利用闭包实现函数柯里化以提高函数的灵活性和复用性

  2. 缓存和记忆:闭包可以用于创建记忆函数,即函数可以记住之前的计算结果并在后续调用时直接返回结果,而不需要重新计算。这在一些计算密集型或重复性高的场景中可以提高性能。

  3. 延迟执行:利用闭包可以在异步回调函数中捕获当前的上下文状态,从而在稍后的时间点触发执行

  4. 封装私有变量:闭包可以用于创建具有私有状态的模块或对象。通过在函数内部定义变量,并将其作为返回函数的一部分暴露出去,可以实现对这些变量的封装和保护,防止外部直接访问和修改

  5. 事件处理:闭包可以用于保存事件相关的数据和状态,以便在事件触发时进行访问和操作。