Цикл
for..in
не работает для коллекций Map и Set.
Почему цикл не работает для Set понятно. В переменную цикла
for..in
присваивается ключ, а ключей у данной коллекции нет.
let set = new Set([233, 'string', {key: 'value'}]);
for(let key in set) {
console.log(key); //у Set нет ключей
};
А вот с Map непонятно. У Map есть ключи, почему не запускается цикл
for..in
?
let map = new Map([['key', 'value']]);
for(let key in map) {
console.log(key);
};
А на чем вообще работает цикл
for..in
?
for..of
, к примеру, работает только с итерируемыми типами данных (т.е. с теми, у которых есть ф-ция Symbol.iterator). Возможно, что у Map и Set просто нет какой-то ф-ции, которая дает возможность запуститься этому циклу. Как это вообще происходит?