Одвајање анонимних функција у JavaScript-у

Претпоставимо сада да је нашим параграфима везана анонимна функција:

javascriptlet elems = document.querySelectorAll('p');

for (let elem of elems) {
  elem.addEventListener('click', function() {
    console.log(this.textContent);
  });
}

Претпоставимо да желимо да одвежемо ову функцију од параграфа након клика на тај параграф. Међутим, чека нас проблем: функција нема име, што значи да се нећемо моћи обратити њој по том имену, да бисмо је одвезали.

За решење проблема потребно је дати име функцији, претварајући је у именовани функцијски израз. Хајде да то урадимо:

javascriptlet elems = document.querySelectorAll('p');

for (let elem of elems) {
  elem.addEventListener('click', function func() { // дали име функцији
    console.log(this.textContent);
  });
}

Сада се ова функција може одвезати унутар саме себе:

javascriptlet elems = document.querySelectorAll('p');

for (let elem of elems) {
  elem.addEventListener('click', function func() {
    console.log(this.textContent);
    this.removeEventListener('click', func); // одвезујемо функцију
  });
}
Задание 1

Дата је листа ul, у чијем је сваком елементу записана број. Направите да се при клику на било коју li њен број увећава за један.

Задание 2

Модификујте претходни задатак тако, да свака li увећава своју вредност само при првом притиску на њу.

Задание 3

Модификујте претходни задатак тако, да свака li увећава своју вредност само ако је њена вредност мања од 10.