TypeError: "x" is not a function
Message
TypeError: "x" is not a function
Thể loại sai:
Chuyện gì đã xảy ra?
Dự định gọi 1 giá trị như 1 chức năng, nhưng giá trị đó không thật sự là 1 chức năng. Một số đoạn mã chờ bạn cung cấp 1 chức năng, nhưng điều đó không xảy ra.
Có lẽ là do bạn đánh sai tên chức năng chăng? Có lẽ object mà bạn định gọi method cho không có chức năng này? Ví dụ như những object của Javascript không có chức năng map, nhưng object của Javascript xâu (Array) thì có.
Có rất nhiều chức năng có sẵn khi cần dùng lại 1 chức năng. Bạn sẽ phải cung cấp 1 chức năng để những method này hoạt động 1 cách chính xác.
- Khi sử dụng những object
Array
hoặcTypedArray
: - Khi sử dụng những object
Map
vàSet
:
Ví dụ
Lỗi đánh máy trong tên chức năng
Trong trường hợp này, xảy ra rất thường xuyên, có 1 lỗi đánh máy trong tên method:
var x = document.getElementByID('foo');
// TypeError: document.getElementByID is not a function
Tên đúng là getElementById
:
var x = document.getElementById('foo');
Chức năng bị gọi sai trên object
Đối với 1 số method nhất định, bạn phải cung cấp 1 chức năng (để gọi trở lại) và nó sẽ hoạt động trên những object nhất định đó thôi. Ví dụ khi Array.prototype.map()
được sử dụng, thì sẽ chỉ chạy với object Array
này mà thôi.
var obj = {a: 13, b: 37, c: 42};
obj.map(function(num) {
return num * 2;
});
// TypeError: obj.map is not a function
Thay vào đó, sử dụng 1 xâu:
var numbers = [1, 4, 9];
numbers.map(function(num) {
return num * 2;
});
// Array [2, 8, 18]