Почему не происходит запуск кода?
Что значит эта ошибка?
let obj = {
a: 1,
b: 2,
c: 3,
};
function func(a, ...b) {
console.log(a, b);
};
func(...obj); //Uncaught TypeError: Found non-callable @@iterator
Ответы (1 шт):
Автор решения: Grundy
→ Ссылка
Для использования spread при вызове функции, передаваемый объект должен быть итерируемым (иметь метод Symbol.iterator возвращающий итератор).
В данном случае передается обычный объект, у которого данного метода нет.
Для решения можно либо использовать массив, либо объявить недостающий метод:
let obj = {
a: 1,
b: 2,
c: 3,
[Symbol.iterator]: function*(){
for(const entry of Object.values(this)){
yield entry;
}
}
};
let arr = [1,2,3];
function func(a, ...b) {
console.log(a, b);
};
func(...obj);
func(...arr);