Как для функции, в качестве аргумента передать функцию?

Имеется функция:
function test(a, b, func) {
   let c = a+b;
   func();
   return c;
}


Примеры вызова:
test(2, 3, 'multiplication');
test(6, 4, 'division');


При этом в функции test вначале происходит какое-то действие, а затем выполняется функция, в первом случае multiplication(), а во втором division().
  • Вопрос задан
  • 73 просмотра
Решения вопроса 2
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Просто передавайте ссылку на функцию, пишите переменную без кавычек

test(2, 3, multiplication);
test(6, 4, division);
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
Вопрос не вполне однозначно сформулирован, но если требуется работать именно с текстовым именем выбранной функции, то можно обращаться к свойству контекста:
function test(a, b, funcName) {
  let c = a+b;
  if (typeof this[funcName] === "function") this[funcName]();
  else throw `No such function ${funcName}`;
  return c;
}

function multiplication() {
  console.log("multiplication!");
}

test(2, 3, 'multiplication'); // выведет multiplication!
test(6, 4, 'division'); // выкинет ошибку, бо нет такой функции
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы