Compare quando un metodo nativo del browser che dipende internamente da 'this' (come 'document.querySelector' o 'window.alert') viene estratto in una variabile separata ('const q = document.querySelector; q("div")') senza essere associato tramite '.bind(document)'.
TYPEERROR_ILLEGAL_INVOCATION
→
Invocare 'arr.reduce((acc, val) => acc + val)' su un array privo di elementi senza passare il secondo parametro (valore iniziale 'reduce(..., 0)') genera questo errore a runtime.
TYPEERROR_REDUCE_EMPTY
→
Si verifica quando si tenta di invocare con le parentesi tonde '()' una variabile che contiene undefined, un oggetto, una stringa o un numero anziché una funzione eseguibile (spesso dovuto a errori di importazione o disallineamento nei nomi).
TYPEERROR_NOT_A_FUNCTION
→
Si manifesta quando si tenta di utilizzare un ciclo 'for...of' o lo spread operator '[...x]' su un valore numerico, undefined, null o su un normale oggetto literal che non implementa 'Symbol.iterator' (come Array, Set, Map o String).
TYPEERROR_NOT_ITERABLE
→