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]