Пытаюсь понять функцию обратного вызова

#javascript #callback

Вопрос:

Я создаю простую функцию обратного вызова, пытаясь понять, как она работает.

 function cbFunction(x, y, z) {
  return x   y   z
}

function caller(x, y, z, cbFunction) {
  console.log('In caller function!')
  // your code here
  if (typeof cbFunction === "function") {
    cbFunction (x, y, z)
  }
}

caller(1, 2, 3, cbFunction)
 

Я вызываю функцию CBF внутри вызывающей функции. Не могли бы вы помочь мне понять, почему он не добавляет x, y, z? Я учусь в JS как новичок и благодарю вас за вашу помощь!

Комментарии:

1. Как вы думаете, почему он не добавляет числа? Вы ничего не делаете с результатом, кроме как возвращаете его, и caller вас также не волнует возвращаемое значение.

2. На самом деле это добавление x, y и z, однако вы ничего не делаете с результатом cbFunction , вы могли бы попробовать return cbFunction(x, y, z) в функции вызывающего абонента, тогда console.log(caller(1, 2, 3, cbFunction));

Ответ №1:

Это добавление чисел — вы просто ничего не делаете с результатом, возвращенным cbFunction .

Вместо этого верните результат, возвращенный cbFunction :

 function cbFunction(x, y, z) {
  return x   y   z
}

function caller(x, y, z, cbFunction) {
  console.log('In caller function!')
  // your code here
  if (typeof cbFunction === "function") {
    return cbFunction(x, y, z); //<-- return
  }
}

console.log(caller(1, 2, 3, cbFunction)) 

Комментарии:

1. Теперь я это вижу. Большое вам спасибо за объяснение!

2. Да, я пытался, но он попросил меня подождать пару минут. Я буду.