1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const f = function () {
let v = "string";

let c = function () {
v = document.createElement("div");
}

let p = function () {
console.log(v);
}

return { c, p }
}

f().c();

f().p(); // string

在调用f().c()以后,f没有被其他资源,被立即释放,即f().c()以后被GC;

如何才能不被自动GC:

1
2
3
4
5
6
7
let o = f();

o.p(); // string

o.c();

o.p(); // <div></div>

如何手动释放:

1
2
3
4
5
o = null;

o = f();

o.p(); // string