Anonyymisten funktioiden sitomisen poisto JavaScriptissä

Oletetaan nyt, että kappaleisiimme on sidottu anonyymi funktio:

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

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

Oletetaan, että haluamme irrottaa tämän funktion kappaleesta klikkaamisen jälkeen. Meitä odottaa kuitenkin ongelma: funktiolla ei ole nimeä, mikä tarkoittaa, että emme pysty viittaamaan siihen sen nimellä irrottaaksemme sen.

Ongelman ratkaisemiseksi funktiolle on annettava nimi, tekemällä siitä nimetty funktionaalinen lauseke. Tehdään näin:

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

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

Nyt tämä funktio voidaan irrottaa sen sisällä itsessään:

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

for (let elem of elems) {
  elem.addEventListener('click', function func() {
    console.log(this.textContent);
    this.removeEventListener('click', func); // irroitetaan funktio
  });
}
Задание 1

Annettu lista ul, jossa jokaisessa kohdassa on kirjoitettu numero. Tee niin, että minkä tahansa li:n klikkaaminen kasvattaa sen numeroa yhdellä.

Задание 2

Muokkaa edellistä tehtävää siten, että jokainen li kasvattaa omaa arvoaan vain ensimmäisellä painalluksella sitä vasten.

Задание 3

Muokkaa edellistä tehtävää siten, että jokainen li kasvattaa omaa arvoaan vain, jos sen arvo on pienempi kuin 10.