Wenn ich die Funktion once
wieJS rekursiven Funktionsaufruf
var button = document.querySelector('button');
button.addEventListener('click', once);
function once() {
console.log('one');
button.removeEventListener('click', once);
}
Es ist nur einmal aufgerufen wird.
Aber wenn ich genannt wie dieses once()
var button = document.querySelector('button');
button.addEventListener('click', once());
function once() {
console.log('one');
button.removeEventListener('click', once());
}
Exception wirft
Exception: InternalError: too much recursion
Könnten Sie bitte erklären, warum dies geschieht.
Sie rufen sofort eine Funktion mit '()' darin auf –
Wenn Sie das '()' nach dem Funktionsnamen verwenden, wird die Funktion ausgeführt. Und Sie möchten nicht ausgeführt werden, wenn Sie Methoden wie 'addEventListener' oder' removeEventListener' übergeben, also entfernen Sie sie einfach. –
Haha ich liebe die Ausnahme, die es wirft - "zu viel Rekursion" –