Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задача по созданию функций в JavaScript

NK163 Ученик (181), на голосовании 11 месяцев назад
Изучаю JS по учебнику - https://code.mu/ru/javascript/book/prime/functions/types/anonymous-functions-object/

Задача:

Сделайте объект с тремя функциями. Пусть первая возвращает через return число 1, вторая - число 2, третья - число 3. С помощью созданных функций выведите в консоль сумму возвращаемых чисел.
Переберите созданный объект циклом и выведите результаты работы функций в консоль.

Что сделал:
 let obj = { 
func1: function(){return 1},
func2: function(){return 2},
func3: function(){return 3}
}
console.log(obj.func1()+obj.func2()+obj.func3()) //первая часть сделана

for (let func in obj){
console.log(obj.func()) //выдаёт ошибку
}
Не понимаю, в чём ошибка и как дальше решить задачу
Дополнен 1 год назад
Нашёл решение. Вопрос закрыт

Ошибка возникает в вашем цикле for...in. Внутри цикла, когда вы обращаетесь к функции, вы используете obj.func(), но это неправильный синтаксис. Вместо этого вы должны использовать переменную func, которая представляет ключ функции в объекте obj. Вот исправленный код:

for (let func in obj) {
console.log(obj[func]()); // Используйте квадратные скобки и переменную func
}

Обратите внимание на использование квадратных скобок [] вместо точки . для доступа к функции в объекте по ключу func. Теперь цикл перебирает все функции в объекте obj и вызывает их, выводя результаты в консоль.

После внесения этих изменений ваш код должен работать правильно и вывести сумму возвращаемых чисел всех трех функций в консоль.
Голосование за лучший ответ
Celtic Hammer Мудрец (13711) 1 год назад
Когда нужно обратиться через переменную (в цикле обращаемся именно через переменную), а не через имя ключа - вызов через точку не сработает. Тут только квадратные скобки.
Вызов функции - круглые скобки
for (i in obj) {
console.log(obj[i]())
};
М . Мастер (1983) 1 год назад
 for (let func in obj){  
console.log(obj.func()) //выдаёт ошибку
}

Правильно, выдает. У тебя в obj нет ключа func)))
Судя по всему ты хочешь что-то такое:

 for (let func in obj){  
console.log(obj[func]());
}
Похожие вопросы