TypeError: "x" is not a function

Message

TypeError: "x" is not a function

Type d'erreur

TypeError.

Quel est le problème ?

Une valeur a été utilisée pour un appel de fonction alors que cette valeur n'est pas une fonction. Autrement dit, un fragment de code attendait une fonction mais a reçu des valeurs d'un autre type.

Il est possible qu'il y ait une coquille dans le nom de la fonction. Peut être que l'objet sur lequel la méthode est invoquée ne possède pas cette fonction (par exemple, les objets Array possèdent une fonction map() mais d'autres objets ne l'ont pas).

Il existe de nombreuses fonctions natives qui fonctionnent à l'aide d'une fonction (callback) passée en argument :

Exemples

Une coquille dans le nom de la fonction

Dans ce cas, qui arrive bien trop souvent, il y a une faute d'orthographe dans le nom de la fonction utilisée :

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

Le nom de la fonction est (dans cet exemple) getElementById (attention à la casse pour les noms en JavaScript) :

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

Appeler une fonction sur le mauvais objet

Certaines méthodes ne fonctionnent que pour certains types d'objet et utilisent une fonction en argument. Ainsi, dans cet exemple, on utilise Array.prototype.map() qui ne fonctionne que sur les objets Array.

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

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

// TypeError: obj.map is not a function

Il faudra utiliser un tableau à la place :

var nombres = [1, 4, 9];

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

// Array [ 2, 8, 18 ]

Voir aussi

Étiquettes et contributeurs liés au document

Étiquettes : 
 Contributeurs à cette page : SphinxKnight
 Dernière mise à jour par : SphinxKnight,