Lingua-e
← Errores
JavaScript

Qué significa Illegal Invocation y cómo solucionarlo

Referencia del error

Illegal Invocation

Lenguaje

JavaScript

Severidad

Media

Cuá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.

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

JavaScript

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