JavaScript: TypeError — Generator is already executing
Si tenta di invocare `.next()` su un generatore (`function*`) mentre il corpo della funzione generatrice sta ancora eseguendo codice al suo interno.
Categoria
Articoli tecnici organizzati per gruppo funzionale.
Si tenta di invocare `.next()` su un generatore (`function*`) mentre il corpo della funzione generatrice sta ancora eseguendo codice al suo interno.
Quando un metodo di classe o oggetto viene passato come callback (es. 'setTimeout(obj.method, 100)'), il contesto 'this' viene disconnesso assumendo 'undefined' o 'window'; si risolve con arrow function '() => obj.method()' o '.bind(this)'.
Le variabili dichiarate con 'let' e 'const' subiscono l'hoisting ma non vengono inizializzate con undefined (come 'var'); accedere ad esse prima della riga di dichiarazione si trova nella Temporal Dead Zone e scatena ReferenceError.
Per standard IEEE 754 il valore NaN (Not-a-Number) non è mai uguale a nessun valore, neanche a se stesso ('NaN === NaN' restituisce false); verificare la presenza di NaN con l'operatore di uguaglianza è un grave bug logico, si deve usare 'Number.isNaN(x)'.
Un elemento HTML viene rimosso dal DOM della pagina ma non può essere liberato dal Garbage Collector perché una closure (es. un setInterval o listener su window) mantiene ancora una variabile che fa riferimento al nodo.
In 'use strict' mode e nei moduli ES6 non è consentito scrivere numeri interi con lo zero iniziale (es. '0123' interpretato come ottale 83); per definire numeri ottali moderni è obbligatorio il prefisso '0o' (es. '0o123').
Una funzione richiama se stessa all'infinito senza una condizione di terminazione (caso base) o una proprietà getter richiama se stessa, esaurendo lo spazio di memoria della call stack del motore JavaScript V8.
Il motore JavaScript cerca la variabile nell'intero scope chain (locale, closures, globale) senza trovarne la dichiarazione, solitamente a causa di typo nel nome o variabile dichiarata in un altro file non importato.