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

发布于 2022-09-05 10:18:58 字数 1746 浏览 22 评论 0

在看理解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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文