10行代码搞定闭包

42 阅读1分钟

image.png

简单讲解一下:对于fn1来说,他的count变量由于自身内部函数在使用,因此不回收,占据一块内存, 对于fn2也是如此,fn1fn2的count变量各自独立,注意:“let fn1 = fun()” 和 “let fn2 = fun()”是实例化,就是将fun的返回函数a赋值给fn1、fn2,“fn1()”和“fn2()”则是执行fn1fn2实例化方法也就是它们各自的a方法。 到这就知道为啥说闭包变量私有化和保存变量的作用了吧~ (ps:需要了解js的垃圾回收机制,简单说就是下文没有使用过的变量/方法会被当做垃圾回收)