JavaScript Closure.

120 阅读1分钟

What Closure?

1. What Is Closure?
// 狭义来说一个函数访问不属于自身作用域的事物就属于闭包
// 广义来说一个函数具有访问不属于自己作用域的事物就是闭包(等于JS函数全是闭包的)

2. Side Effect Closure
// 会造成内存泄漏

3. Why Memory Leak?
// 垃圾回收机制 Garbage Collection 简称(GC)
// 也就是大名鼎鼎的GC算法而JS主要用到的是GC算法中的标记清除算法
// 当你产生了一个事物则会被GC标记 有一个依赖就会 +1 少一个依赖就会 -1
// 此时 +1、-1又涉及到了 GO、AO、执行栈 因为有些事务完成会销毁对应事物
// 当GC、Scanner扫描到 某事物依赖为 0 时则会判定为 垃圾 进行回收
// 而一个函数内部使用了一个外部事物就造成了外部永远不会被主动回收
// 为什么依赖了就不会主动回收了呢?因为 GC 不能确定你什么时候还会再使用这个函数