我正在学习在 JavaScript 中使用集合,并在浏览文档时注意到一些奇怪的行为。
let beverageSet = new Set();
beverageSet.add('Rum');
beverageSet.add('Tea');
beverageSet.add('OJ');
console.log(beverageSet); // returns Set [‘Rum’, ‘OJ’]
beverageSet.delete('Tea');
console.log(beverageSet); // returns Set [‘Rum’, ‘OJ’]
我知道在执行代码之前提升会将所有变量拉到作用域的顶部,但我没有看到任何表明它会影响在数组和集合上调用的 console.log()/方法。
这是提升的效果还是其他什么?在删除项目然后再次使用 console.log() 之前,如何解决这个问题并使用 console.log() 完整的集合?
最佳答案
console.log
实现有时决定异步获取值,从而显示可能应用了突变的结果,这些突变实际上发生在 console.log
语句之后。
为了避免这种情况,请以一种或另一种方式获取副本,例如如下所示:
console.log([...beverageSet]); // convert set to new array.
另请参阅 Bergi 的 answer关于console.log异步性的问题。
这方面还有一个 chromium 问题:50316 - Console.log gives incorrect output in Chrome Developer Tools console 。读起来可能很有趣。
关于javascript - 从集合中添加或删除项目以及提升的效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41473327/