@olya_097

Почему именно нужен return function() (не просто return)?

https://jsfiddle.net/69u8qzpm/

а почему если
убрать return function()
то код не работает?
https://jsfiddle.net/69u8qzpm/1/
Почему именно нужен return function()? а не просто return
  • Вопрос задан
  • 320 просмотров
Решения вопроса 1
rockon404
@rockon404
Frontend Developer
Задача. По нажатию на кнопки A и B добавлять буквы a и b в значение element. Варианты решения.
1. Написать для каждой кнопки свой хандлер:
function handleClickA() {
  element.innerHTML += 'a';
}

function handleClickB() {
  element.innerHTML += 'a';
}

a.addEventListener('click', hanldeClickA);
b.addEventListener('click', hanldeClickB);

Главная проблема подобных решений дублирование кода. Букв 26/33, еще цифры и спец символы.

Решение 2. Написать билдер:

function buildHandler(char) {
  return function() {
    element.innerHTML += char;
  }
}

a.addEventListener('click', buildHandler(a.innerHTML));
b.addEventListener('click', buildHandler(b.innerHTML));


С подобными билдерами очень удобно работать в цикле:
for (let key in keys) {
  key.addEventListener('click', buildHandler(key.innerHTML);
}


Почему именно нужен return function() (не просто return)?

addEventListener принимает вторым аргументом функцию, именно ее функция билдер и возвращает.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
BRAGA96
@BRAGA96
Потому, что метод addEventListener принимает вторым агрументом callback функцию.
Например, почему не работает вот это:
element.addEventListener('click', 'Строка');
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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