const scoreMap = new Map();
scoreMap.set("math", 1);
scoreMap.set("chinese", 2);
scoreMap.keys().forEach((key) => {
console.log(key)
})
这样写的有个问题是map.keys()返回的是一个迭代器对象,对迭代器使用forEach()方法会导致一些低版本的google浏览器不支持报错。
点击上面的地址mdn lterator forEach可以看到迭代器的forEach版本只支持122及以上的版本的
解决方案:
const scoreMap = new Map();
scoreMap.set("math", 1);
scoreMap.set("chinese", 2);
for (const key of scoreMap) {
console.log(key)
}
使用for...of来遍历迭代器对象
for...of
语句执行一个循环,该循环处理来自可迭代对象的值序列。可迭代对象包括内置对象的实例,例如 Array、String、TypedArray、Map、Set、NodeList(以及其他 DOM 集合),还包括 arguments 对象、由生成器函数生成的生成器,以及用户定义的可迭代对象。
可以看到for...of的兼容性更强一些,总结在使用一些新特性的时候需要考虑到兼容性,通常可以通过type of
obj.method === 'function'判断改对象是否有该方法。