0 / 0 / 0
Регистрация: 29.02.2016
Сообщений: 24

Ошибка в коде со стрелочной функцией

12.11.2020, 15:38. Показов 2315. Ответов 5

Студворк — интернет-сервис помощи студентам
Не могу понять как исправить ошибку в коде. Ругается на func(); и "obj" выводит один раз вместо трех.


JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
let obj = {
            name: "obj",
            print: function () {
                let res = () => console.log(this.name);
                res();
            }
            };
            function multiCaller(func, count) {
                for (let i = 0; i < count; i++) {
                    
                    func();
                }
            }
        multiCaller(obj.print(), 3);  // "obj", 3 раза
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.11.2020, 15:38
Ответы с готовыми решениями:

Непонятка с функцией(ошибка в коде)
Необходимо вычислить значения нескольких сумм с помощью функций в следующей функции: y=a+4*sum J=2, N+1(3*J^2+J+2)/4+3*sum J=1,N(2*J+3);J...

Ошибка в коде с функцией strcmp
строка с функцией strcmp не работает,пробовал делать элементы структуры char,но все равно говорит что не может преобразовать из char в ...

Работа с функцией fopen - ошибка в коде
Подскажите, почему при компиляции выдает ошибку? #include &lt;stdio.h&gt; #include &lt;string.h&gt; unsigned crc16(const char *buf,...

5
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
12.11.2020, 15:55
В 14 строчке obj.print() это результат вызова функции, но не функция. Можно так:
JavaScript
14
multiCaller(() => {obj.print.apply(obj)}, 3)
0
0 / 0 / 0
Регистрация: 29.02.2016
Сообщений: 24
12.11.2020, 16:07  [ТС]
На func(); теперь не ругается, но в консоли выходит undefined(
0
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
12.11.2020, 16:13
Лучший ответ Сообщение было отмечено Igor00000 как решение

Решение

... Кстати, если изменить функцию res, то можно сделать так:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 let obj = {
  name: "obj",
  print: function () {
    let res = () => {console.log(obj.name)};
    res();
    return obj.print
  }
};
function multiCaller(func, count) {
  for (let i = 0; i < count; i++) {
    func();
  }
}
multiCaller(obj.print(), 3);  // "obj", 3 раза


Добавлено через 2 минуты
Не знаю, у меня следующий код выводит три раза obj:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
let obj = {
  name: "obj",
  print: function () {
    let res = () => console.log(this.name);
    res();
  }
};
function multiCaller(func, count) {
  for (let i = 0; i < count; i++) {
    func();
  }
}
multiCaller(() => {
  obj.print.call(obj);
}, 3);
1
0 / 0 / 0
Регистрация: 29.02.2016
Сообщений: 24
12.11.2020, 16:15  [ТС]
Спасибо!)
0
Эксперт JS
6497 / 3908 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
12.11.2020, 17:05
Лучший ответ Сообщение было отмечено DrType как решение

Решение

Здравствуйте.
Непонятна исходная задача.
Поскольку multiCaller() требует просто функцию, а метод теряет свой контекст исполнения (о чём мы недавно дружно узнали),
то можно схитрить и подготовить стрелочную функцию со ссылкой на свой родной объект.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
let obj = {
    name: "obj",
    print() {
        let that = this;
        let res = () => console.log(that.name);
        return res;
    }
};
 
function multiCaller(func, count) {
    for (let i = 0; i < count; i++) {
 
        func();
    }
}
 
multiCaller(obj.print(), 3);  // "obj", 3 раза
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.11.2020, 17:05
Помогаю со студенческими работами здесь

Ошибка в коде взаимодействия клиента и сервера на основе протокола TCP/IP (ошибка в коде)
Задание: Осуществить взаимодействие клиента и сервера на основе протокола TCP/IP. Реализовать параллельное соединение с использованием...

Исправить ошибки в коде Python c функцией
Формула: g=min\left( {x}_{i}^{2}-\left|{x}_{i} \right|\right) import math import random n=20 x= def min(i): for i in...

Ошибки в коде с функцией Метода Дихотомии
День добрый. Имеется функция Метода Дихотомии, но работает не очень корректно. Выдает неправильные данные по функциям, которые задаются в...

Цикл с функцией idss - найти ошибку в коде
Почему-то не получается организовать цикл. mA(:,:,1) = 0 100.0000 0 0 0 100.0000 -0.0001 ...

Программа с рекурсивной функцией. В моем коде несколько ошибок, нужно исправить
Требуется написать программу для решения задачи на скрине, используя рекурсивную функцию. У меня есть подозрение, что я что то делаю не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru