什么是闭包?

一个函数引用了另一个函数作用域中的变量就是闭包。通常的实现方式如下:

  1. function closure () {
  2. let a = 1;
  3. return function(num){
  4. a = num;
  5. return a;
  6. }
  7. }
  8. const changeNum = closure()
  9. changeNum();

闭包的作用

隐藏、保护一个私有变量

闭包的问题

闭包会保留它们包含函数的作用域,会比其他函数更占内存。过度使用可能导致内存过度占用。
V8等优化的js引擎会努力回收被闭包困住的内存,不过还是需要谨慎使用。