@zwezew

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

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

К примеру

function doHomework(subject, callback) {
  alert(`Starting my ${subject} homework.`);
  callback();
}
function alertFinished(){
  alert('Finished my homework');
}
doHomework('math', alertFinished);


когда надо передать в callback функцию с аргументом
  • Вопрос задан
  • 503 просмотра
Решения вопроса 4
zendor
@zendor
Используйте функцию обертку или bind. С bind можно каррировать аргументы.
function foo(f) {
  console.log(f());
}

function bar(string) {
  return string;
}

foo(bar.bind(null, 'toster')); //'toster'
Ответ написан
Комментировать
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Можно через bind, например
let func = alertFinished.bind(null, 'ваш аргумент') // тут null это контекст this, но он нам не нужен. Нам нужен второй аргумент

теперь каждый раз, когда вы будете вызывать func(), будет вызываться alertFinished('ваш аргумент').
и работайте с этой функцией как с обычной, можно передать ее аргументом
doHomework('math', func);
аналогично
doHomework('math', function () { alertFinished('ваш аргумент') });
Ответ написан
Комментировать
hack504
@hack504
doHomework('math', function(){alertFinished($arg);});
Ответ написан
Комментировать
@NiyazNA
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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