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дан кичине болсо гана
маанисин көбөйтсүн.