正如标题所暗示的那样,迭代新的Set& amp;在迭代期间映射类型并删除条目?
例如,在Java中,这会导致ConcurrentModificationExceptions。
我无法在规范中找到有关此问题的任何内容。所以我猜这是允许的?
答案 0 :(得分:2)
引用MapIterator object's next()
section,
让条目成为列表,它是m的[[MapData]]内部广告位的值。
- 醇>
重复,而 index 小于条目元素的总数。 每次评估此方法时,必须重新确定元素数量。
... ...
- 将O的[[Map]]内部插槽设置为 undefined 。
- 返回 CreateIterResultObject(未定义, true )。
醇>
与SetIterator object's next()
section类似,
- 让条目成为列表,它是s的[[SetData]]内部插槽的值。
- 重复,而索引小于条目元素的总数。 每次评估此方法时,必须重新确定元素数量。
醇>
... ...
- 将O的[[IteratedSet]]内部插槽设置为 undefined 。
- 返回 CreateIterResultObject(未定义, true )。
醇>
由于每次调用next()
时都会重新评估值,如果当前指针( index )大于条目的长度,则它不会抛出错误,而是返回undefined
。
但是,通常,避免在迭代容器时修改容器。