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를 클릭해도 그 숫자가 1씩 증가하도록 만드세요.

Задание 2

이전 문제를 수정하여, 각 li가 자신의 값을 처음 클릭할 때만 증가하도록 만드세요.

Задание 3

이전 문제를 수정하여, 각 li의 값이 10보다 작을 때만 자신의 값을 증가하도록 만드세요.