考虑以下函数,当传递一个可迭代的东西时,该函数尝试实现通用行为:
let f = function(thing) {
if (typeof thing[Symbol.iterator] === 'function') {
for (let [key, value] of thing) {
console.warn(key, value);
}
}
}
如果可迭代事物在迭代时不返回键值对,则键变量将被设置为迭代的实际值,并且值将是未定义的。我希望始终检索该值,无论迭代器返回的数据类型是什么。
如何检测这个可迭代的东西在迭代时没有返回键值对?
我不能依赖于检查值是否未定义,因为对于键值可迭代来说,拥有一个键和一个未定义的值是完全有效的。
Edit:
一个 RunKit 示例,演示使用该通用函数迭代 Map 和 Set 会导致 Set 出现意外结果:
https://runkit.com/ericmorand/generic-iterable-handler https://runkit.com/ericmorand/generic-iterable-handler
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)