javascript - 从集合中添加或删除项目以及提升的效果

标签 javascript arrays set

我正在学习在 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/

相关文章:

javascript - 在 ExtJS 的组件中添加 onclick 函数?

arrays - 在 shell 脚本中获取日期

algorithm - 如何在没有蛮力方法的情况下有效地组合不相交的集合?

c++ - 在 C++ 中清除容器的最佳方法是什么?

javascript - 为什么history.push在react js中不起作用?

javascript - dc.js:具有嵌套分组的箱线图

javascript - 从嵌套对象数组中递归创建字符串?

javascript - 合并数组搜索功能不起作用

Java:HashMap 声称它有 key ,但不知何故没有

javascript - 使用 JavaScript 划分输入字段