ECMAScript 6 Map &设置-安全在迭代期间删除

ECMAScript 6 Map & Set - Safe to delete during iteration?

本文关键字:迭代 删除 安全 Map 设置 ECMAScript      更新时间:2023-09-26

如标题所示,遍历新的Set &在迭代过程中映射类型和删除条目?

例如,在Java中,这会导致concurrentmodificationexception。

我在规范中找不到任何关于这个问题的内容,所以我猜这是允许的??

引用MapIterator对象的next() section,

  • entries为m的[[MapData]]内部槽位值的List。

  • index小于条目的元素总数时重复。

  • ……

  • 设置O的[[Map]]内部槽位为undefined
  • <返回em> CreateIterResultObject (定义, 真正) 。
  • 同样来自settiterator对象的next()部分,

  • entries为s的[[SetData]]内部槽位值的List。
  • 索引小于条目的元素总数时,重复
  • 每次计算此方法时,必须重新确定元素的数量。
  • ……

  • 设置O的[[IteratedSet]]内部槽位为undefined
  • <返回em> CreateIterResultObject (定义, 真正) 。
  • 由于每次调用next()时都会重新计算值,如果当前指针(索引)大于条目的长度,则不会抛出错误,而是返回undefined


    但是,一般来说,避免在迭代容器时修改容器