Skip to content
本页目录

闭包

什么是闭包?

MDN:闭包(closure)是一个函数以及其捆绑的周边环境状态(lexical environment,词法环境)的引用的组合。换而言之,闭包让开发者可以从内部函数访问外部函数的作用域。在 JavaScript 中,闭包会随着函数的创建而被同时创建。

简单来说:闭包(closure)就是能够读取其它函数内部变量的函数。

闭包的作用是什么?

  1. 模拟私有变量(立即执行函数);
  2. 让变量的值始终保持在内存中;

日常有哪些地方会用到闭包?

  • 防抖节流函数
  • 函数科里化
  • 模拟私有变量

闭包可能会造成什么问题?

  • 被引用的私有变量不能被销毁,增加了内存消耗,容易造成内存泄漏

如何处理闭包造成的内存泄漏?

  • 在变量使用完后手动将其赋值为 null,其将会在下一个垃圾回收周期中被回收掉。