Անանուն ֆունկցիաների անբաժանումը 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-ից: