强引用和弱引用

什么是弱引用和强引用

强引用:
JavaScript 中强引用:对象的引用在 JavaScript 中是强引用,也就是将一个引用对象通过变量或常量保存时,那么这个变量或常量就是强引用,这个对象就不会被回收。

弱引用:
JavaScript 中弱引用: WeakMaps 和 WeakSets 是我们在 JavaScript 使用弱引用唯一途径,将一个对象作为键添加到 WeakMap 或 WeakSet 中并不能防止这些对象被回收。

举例说明弱引用和强引用:
强引用就是一个小孩A牵着一条狗,他们之间通过狗链儿连着。
弱引用就是,旁边有个人B指着A牵的狗,说:嘿,那有条狗,B指向那条狗,但他们之间没有是指绑在一起的东西。
当A放开狗链,狗就会跑掉(被垃圾回收),无论B是不是还指着。
但是,当B不再指着那条狗,狗还被A牵着,不会影响它是否跑掉。

const info = {name:'张三',age:18}
const info2 = info;
// 当info为null时,GC(垃圾回收器)不会回收info,因为有info2引用着它
info = null;


// 弱引用
const infoSet = new WeakSet();
infoSet.add(info);

//当info置空的时候,GC就会过来回收info对象,GC不会管弱引用是否引用着,它是不被GC认可的
info = null;


参考:链接~~

你可能感兴趣的:(javascript,前端)