weak map 键被清除,置为null map中有时可以看到内容

在看理解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:
clipboard.png

有时结果又是:
clipboard.png

如果是添加两个键值对,然后清除其中一个的引用

 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"} 为什么?
        // 都不能访问到

输出也是会有两种结果

clipboard.png

clipboard.png

阅读 2.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题