Qué significa Illegal Invocation y cómo solucionarlo
Referencia del error
Illegal Invocation
Lenguaje
Severidad
MediaCuándo ocurre
Este TypeError se lanza cuando un método incorporado se llama con el contexto 'this' incorrecto.
Posibles soluciones
Usa .bind() para preservar el 'this' correcto: const log = console.log.bind(console). Envuelve el método en una función flecha. Al pasar métodos como callbacks, vincúlalos siempre a su objeto host primero.
Errores relacionados
Más detalles
Este TypeError se lanza cuando un método incorporado se llama con el contexto 'this' incorrecto. Muchos métodos nativos del navegador y de Node.js usan 'this' internamente y lanzarán un error si se desvinculan de su objeto host.
Por qué ocurre
- •Almacenar un método incorporado (como console.log) en una variable y llamarlo sin el receptor original.
- •Pasar un método DOM como callback donde 'this' se convierte en undefined o window.
- •Usar Function.prototype.call() o .apply() en un método nativo con el contexto incorrecto.
Posibles soluciones
Usa .bind() para preservar el 'this' correcto: const log = console.log.bind(console). Envuelve el método en una función flecha. Al pasar métodos como callbacks, vincúlalos siempre a su objeto host primero.
Ejemplos
Código que causa el error
const log = console.log;
log("hello");Error en la terminal
TypeError: Illegal invocation
Código corregido
// Bind the method to its original object
const log = console.log.bind(console);
log("hello"); // works
// Or use an arrow wrapper
const log2 = (...args) => console.log(...args);Practica en inglés
¿Cómo le explicarías un Illegal Invocation a un compañero dev? Elige la frase correcta:
"I hit an error...
¿Listo para practicar tu inglés en el trabajo?
Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.
Prueba Lingua-e gratis