# Отвязывание анонимных функций в JavaScript

Пусть теперь к нашим абзацам привязана анонимная функция:

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

Пусть мы хотим отвязать эту функцию от абзаца после клика по этому абзацу. Нас, однако, ждет проблема: у функции нет имени, а значит мы не сможем обратится к ней по этому имени, чтобы отвязать ее.

Для решения проблему нужно дать имя функции, сделав из нее именованное функциональное выражение. Сделаем это:

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

Теперь эту функцию можно отвязать внутри нее самой:

`let elems = document.querySelectorAll('p'); for (let elem of elems) { elem.addEventListener('click', function func() { console.log(this.textContent); this.removeEventListener('click', func); // отвязываем функцию }); }`

Дан список `ul`, в каждом пункте которого записано число. Сделайте так, чтобы по клику на любую `li` ее число увеличивалось на единицу.

Модифицируйте предыдущую задачу так, чтобы каждая `li` увеличивала свое значение только по первому нажатию на нее.

Модифицируйте предыдущую задачу так, чтобы каждая `li` увеличивала свое значение только если ее значение меньше `10`.

←→
↑
en ru