TypeError: "x" is not a function

Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.

Mensaje

TypeError: "x" is not a function

Tipo de error

TypeError.

¿Qué ha ido mal?

Se ha intentado llamar a un elemento o valor como si fuera una función, pero no lo era. El código esperaba que hubiera una función implementada, pero no la ha encontrado.

¿Está bien escrito el nombre de la función?¿El objeto sobre el que estás haciendo la llamada tiene ese método implementado realmente? Por ejemplo, los objetos tipo Array tienen implementada la función map, pero el resto de tipos no la tienen.

Hay muchas funciones propias de Javascript (built-in) que necesitan una función de callback, por lo que tienes que pasar esa función como parámetro para que estos métodos funcionen correctamente.

Ejemplos

Nombre de la función mal escrito

En este caso, que ocurre con mucha frecuencia, el nombre de la función está mal escrito:

var x = document.getElementByID("foo");
// TypeError: document.getElementByID is not a function

El nombre correcto de la función es getElementById:

var x = document.getElementById("foo");

Función llamada en el objeto equivocado

Puede que el método que queramos usar no esté implementado en el tipo de objeto que estemos usado. En este ejemplo, queremos usar el método map, que recibe una función de callback como argumento, pero solo lo tienen los objetos Array.

var obj = { a: 13, b: 37, c: 42 };

obj.map(function(num) {
  return num * 2;
});

// TypeError: obj.map is not a function

Como obj es un diccionario (parejas clave/valor), no tiene método map y se produce el error. Para evitarlo, hay que usar un Array:

var numbers = [1, 4, 9];

numbers.map(function(num) { 
  return num * 2; 
}); 

// Array [ 2, 8, 18 ]

Vea también

Etiquetas y colaboradores del documento

 Colaboradores en esta página: josegarciaclm95
 Última actualización por: josegarciaclm95,