@NameSurnameSlay

Как работает этот код?

function calcSumm(numOne, numTwo, more, less, equals) {
  let numSumm = numOne + numTwo;

  if (numSumm > 3) {
    more();
  } else if (numSumm == 3) {
    equals();
  } else {
    less();
  }
}

function showMoreMessage() {
  console.log("Больше чем 3");
}
function showEqualsMessage() {
  console.log("Ровно 3");
}
function showLessMessage() {
  console.log("Меньше чем 3");
}

calcSumm(2, 1, showMoreMessage, showLessMessage, showEqualsMessage);


Я новичок помогите разобраться. У меня такой вопрос. Как работает этот код? Это так называемы функции-колбеки. В блоке проверки указаны функции пустышки, почему они отрабатывают?
Если можно обьясните по этапно работу кода. пожалуйста.
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ответы на вопрос 3
sergiks
@sergiks Куратор тега JavaScript
♬♬
В JavaScript любую функцию можно «класть в переменную», передавать аргументом в другую функцию – поступать с ней, как, например, с обычным числом или строкой.
const f1 = function() {
  console.log("I am F 1");
};

const f2 = f1;
f2(); // I am F 1

Так и в этом примере: три функции передают как аргументы в основную.

Логика кода в вопросе: сложить два числа.
И вызвать одну из трёх функций, в зависимости от сравнения результата с числом 3.

Бытовая аналогия: вам на стол поставили три телефона: красный, чёрный и зелёный. Каждый настроен звонить на какой-то свой фикс. номер. Вы не знаете, на какой именно. Но у вас инструкция: если число меньше 3, поднять трубку на красном аппарате. Если равно, то на чёрном. Если больше, то на зелёном.

Вот упрощённый пример:
function call_if_true(value, func) {
  if (value) {
    func();
  }
}

call_if_true(
  1,
  function() { console.log("It's true!"); }
);
Ответ написан
Комментировать
@M1mdex
Много не скажу но скажу точно - если сумма больше чем три то вывести сообщение в консоль - больше чем 3. Если = 3 то вести ровно 3. Если меньше то вывести меньше чем 3
Ответ написан
Комментировать
@Ilya49
function calcSumm(numOne, numTwo, more, less, equals) {
  let numSumm = numOne + numTwo;

  if (numSumm > 3) {
    more();
  } else if (numSumm == 3) {
    equals();
  } else {
    less();
  }
}

Смотри у тебя есть основная функция которая имеет 5 аргументов, первые две отвечают за числа остальные три за функции, далее внутри данной функции создаешь переменную внутри которой помещается сумму двух первых переменных дальше у тебя дается условие : если сумма чисел больше 3 то вызовется первая функция если ровна 3 вторая в ином случае третья дальше
function showMoreMessage() {
  console.log("Больше чем 3");
}
function showEqualsMessage() {
  console.log("Ровно 3");
}
function showLessMessage() {
  console.log("Меньше чем 3");
}

создаются отдельно 3 функции первая выводит в консоль строку "Больше чем 3" вторая "Ровно 3" и третья "Меньше чем 3" и
calcSumm(2, 1, showMoreMessage, showLessMessage, showEqualsMessage);

затем ты вызываешь основную функцию в которой при вызове уже присваиваешь ей данные аргументы
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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