Map和WeakMap的区别

强引用:
只要引用存在,垃圾回收器永远不会回收。
弱引用:
会垃圾回收机制回收。


{

  let  x  = {

    a:[1,2]

  };

  var map = new Map();

   map.set(x,'something');

}

console.log(map);

map是在{}这样的一个scope中定义的,但是map属于"强引用" ,不会被辣鸡回收机制回收,所以这里是可以打印出map的。

扫描二维码关注公众号,回复: 1454119 查看本文章

{

  let  x  = {

    a:[1,2]

  };

  var map = new WeakMap();

   map.set(x,'something');

}

console.log(map);

WeakMap属于弱引用,其中的entriy会被辣鸡回收机制回收,所以这里打印出的map中长度是0。 (注意这里map变量没有被回收,因为用的是var)

 

猜你喜欢

转载自www.cnblogs.com/eret9616/p/9134548.html