Удаление функции после срабатывания

например есть функция которая при каждом клике печатает число, и после того когда количества чисел 3 функция удаляется, нужно чтобы удалился а не прекратил работу

это пример, а так, просто нужна была функция которая удаляется после срабатывания чтобы не повторно не могли звать функцию


Ответы (1 шт):

Автор решения: OPTIMUS PRIME

В какой-нибудь внешней переменной, или прямо в объекте функции, можно завести считалку вызовов. Как только дойдет до 3 — удалить обработчик.

let btn = document.querySelector("#bubu");

btn.addEventListener("click", function _self() {
  console.log( "Какое-то число", _self.call_count );
  
  _self.call_count = (_self.call_count || 0) + 1;
  if (_self.call_count == 3) btn.removeEventListener("click", _self);
});
<button id="bubu"> Test </button>

На первой итерации _self.call_count - undefined.
Получается _self.call_count = (undefined || 0) + 1; → 0 + 1, а дальше при вызовах уже увеличивается на 1.


let k = 0, btn = document.querySelector("#bubu");

btn.addEventListener("click", function _self() {
  console.log( "Какое-то число", k );
 
  if (++k == 3) btn.removeEventListener("click", _self);
});
<button id="bubu"> Test </button>

→ Ссылка