передать функцию в качестве аргумента в javascript - PullRequest
0 голосов
/ 25 марта 2020

В настоящее время я решаю упражнение и столкнулся с проблемой передачи функции в качестве аргумента другой функции. Упражнение: 1. Определить функцию, которая принимает два аргумента, a и b , и возвращает сумму этих аргументов. var add = function(a,b){return a+b;};

2. Определите переменную calculator и назначьте ей функцию, которая принимает три аргумента: a, b и c. Внутри тела calculator вызовите функцию, переданную в качестве аргумента c, передав в качестве аргументов a и b . var calculator = function(a,b,c=add(a,b)) { var invoke = c; console.log(invoke); };

3.invoke вычислить, передав ему функцию sum в качестве третьего аргумента. Это должно быть так? calculate(x,y,sum());

при отправке кода я получаю следующую ошибку: Функция вычисления должна выводить результат вызова undefined с аргументами x и y;

Кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Вы должны понимать, что такое "функции первого класса". Практически это говорит о том, что функции - это такие же значения, как и все.

Существует огромная разница между var a = f() и var a = f. Первый вызывает или , запускает , f и сохраняет результат в a. Последний сохраняет f сам в a. Это означает, что a является функцией, и вы можете сделать a() - что равно f().

Если вы хотите создать функцию, которая принимает в качестве аргумента другую функцию (новая функция называется функция высшего порядка , а существующая является callback ), вы делаете это следующим образом:

function add(a, b) {
  return a + b;
}

function calculator(a, b, callback) {
  return callback(a, b); // Invoke the function stored in `callback` with parameters `a` and `b` and return the result
}

Теперь я оставляю третью часть для вас как упражнение ...

Редактировать:

Начиная с ES6, вы можете определить параметр по умолчанию в форме function(param = default), однако, чтобы использовать add в качестве значения по умолчанию, вы должны сделать Обязательно, вы объявляете это до calculate, поэтому, когда механизм js видит объявление calculate, он уже знает, что такое add.

0 голосов
/ 25 марта 2020

«Вызов функции c передача в качестве аргументов a и b» - это много слов для c(a,b)

Похоже, что результат второго шага должен выглядеть следующим образом:

var calculator = function(a,b,c) { return c(a,b) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...