TypeError: "x" nie jest funkcją
Wiadomość
TypeError: "x" is not a function
Typ błędu
Co poszło źle?
Próbowano wywołać wartość jak funkcję, ale wartość nie jest funkcją. Kod oczekuje od Ciebie przekazania funkcji, co nie miało miejsca.
Może zrobiłeś literówkę w nazwie funkcji? Może objekt na którym wywołujesz tę metodę nie posiada tej funkcji? Na przykład, objekt JavaScript nie posiada funkcji map, natomiast objekt JavaScript Array posiada.
Istnieje mnóstwo wbudowanych funkcji wymagających (callback) funkcji. Będziesz musiał wprowadzić funkcję, by metody te działały poprawnie:
- Gdy pracujesz z
Array
lubTypedArray
objektami: - Gdy pracujesz z
Map
iSet
objektami:
Przykłady
Literówka w nazwie funkcji
W tym wypadku, co zdarza się zbyt często, jest literówka w nazwie metody:
var x = document.getElementByID('foo');
// TypeError: document.getElementByID is not a function
Poprawna naywa metody to getElementById
:
var x = document.getElementById('foo');
Funkcje wywołane na nieodpowiednim objekcie
Dla pewnych metod, musisz podać (callback) funkcję, która będzie działała tylko dla specyficznych objektów. W tym przykładzie, Array.prototype.map()
jest użyta, podczas gdy działa tylko z objektami Array
var obj = {a: 13, b: 37, c: 42};
obj.map(function(num) {
return num * 2;
});
// TypeError: obj.map is not a function
Użyj w zamian array:
var numbers = [1, 4, 9];
numbers.map(function(num) {
return num * 2;
});
// Array [2, 8, 18]