Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 29.02.2016
Сообщений: 24

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

12.11.2020, 15:38. Показов 2273. Ответов 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
6496 / 3907 / 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
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru