Задать вопрос
AlekseyPavlov
@AlekseyPavlov
погромист

Почему функция следующего вида не работает в обработчике событий?

Есть функция с возвратом другой функции. Во внешней надо поставить переменную, которая инициализируется и приравняется к undefined только первым вызовом:
function f(elem) {
  var name;
  return function() {
    ...
    name = elem;
  }
}

И обработчик событий:
parentElem.onclick = function(event) {
  if(условие) f(event.target);
}

Я не знаю, в чём проблема: ничего не происходит при клике. Если мой код не имеет ошибок, то какое правило языка я нарушил?
  • Вопрос задан
  • 103 просмотра
Подписаться 1 Простой 4 комментария
Решения вопроса 1
AngReload
@AngReload
Кратко о себе
Функция f создаёт и возвращает анонимную функцию. Но и всё. Что бы новосозданная функция запустилась, нужно добавить скобок.
parentElem.onclick = function(event) {
  if(условие) f(event.target)();
}

Одно непонятно, зачем вообще создавать анонимную функцию для каждого аргумента, почему бы просто не запускать функцию с этим аргументом.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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