在看理解ES6 Map时,根据书的代码敲。发现清除引用后,虽然map.has(key)已经是false,但是console.log(map)时却有两种结果。代码如下:
let map = new WeakMap(),
element = document.querySelector('.ele'),
element2 = document.querySelector('.ele2');
map.set(element, 'sss');
let value = map.get(element);
console.log(value);
// 移除该元素
element.parentNode.removeChild(element);
element = null;
console.log(map)
控制台输出结果1:
有时结果又是:
如果是添加两个键值对,然后清除其中一个的引用
let map = new WeakMap(),
element = document.querySelector('.ele'),
element2 = document.querySelector('.ele2');
map.set(element, 'sss');
map.set(element2, '222');
let value = map.get(element);
let value2 = map.get(element2);
console.log(value);
console.log(value2);
// 移除该元素
element.parentNode.removeChild(element);
element = null;
console.log(map)
// 只有一个element时, map [[Entries]]: Array(0) 有时又不是空
//WeakMap {div.ele => "sss", div.ele2 => "222"} 为什么?
// 都不能访问到
输出也是会有两种结果