的安全代码new Set()
可能如下所示:
let items = [];
for (let item of set)
if (isBad(item))
items.push(item);
for (let item of items)
set.delete(item)
我可以将代码简化为:
for (let item of set)
if (isBad(item))
set.delete(item);
的安全代码new Map()
可能如下所示:
let keys = [];
for (let [key, val] of map)
if (isBadKey(key) || isBadValue(val))
keys.push(key);
for (let key of keys)
map.delete(key)
我可以将代码简化为:
for (let [key, val] of map)
if (isBadKey(key) || isBadValue(val))
map.delete(key)
是的,您可以简化一下,这是完全安全的。
从最后一点开始,唯一危险的事情就是
const s = new Set([1]);
for (let x of s) {
s.delete(x);
s.add(1);
}
但这不是由于未定义的行为或内存累积,而是由于无限循环。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句