Garfields
@Garfields

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

Буду благодарен, если объясните, как параметры стали функциями и почему выполняется confirm если он присутствует только в условии.

Спасибо!

function ask(question, yes, no) {
    if (confirm(question)) yes()
    else no();
  }

function showOk() {
  alert( "Вы согласились." );
}

function showCancel() {
  alert( "Вы отменили выполнение." );
}

// использование
ask("Вы согласны?", showOk, showCancel);
  • Вопрос задан
  • 811 просмотров
Решения вопроса 1
// здесь принимаем функции как параметры (yes - showOk, no - showCancel)
function ask(question, yes, no) {
    // confirm(question) выполняется так как нам нужен результат из if (true или false)
    // Если confirm(question) - true (нажмете Ок), то выполниться yes() (showOk), иначе выполниться no() (showCancel)
    if (confirm(question)) yes()
    else no();
  }

function showOk() {
  alert( "Вы согласились." );
}

function showCancel() {
  alert( "Вы отменили выполнение." );
}

// здесь передаем функции showOk и showCancel в параметры ask (первый параметр - текст сообщения в confirm)
ask("Вы согласны?", showOk, showCancel);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
SagePtr
@SagePtr
Еда - это святое
Вкратце - у нас есть функция, принимающая три параметра - текст сообщения и два коллбэка.
Функция показывает сообщение с кнопками "да" / "нет" (это зависит от браузера, каждый оформляет сообщение по-своему, текст кнопок и расположение тоже могут отличаться), и если пользователь тыкнет да - дёргает первый колбэк, если тыкнет нет - дёргает второй колбэк.
А в колбэки мы передаём две функции, каждая из которых показывает сообщение (разные).
Ответ написан
Комментировать
@sxrcist
let ask = (question, yes, no) => confirm(question) ? yes(alert("Вы согласились.")) : no(alert("Вы отменили выполнение."));
ask("Вы согласны?");
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы