lỗi cổ điển. Bạn cần cung cấp một chức năng, thay vì thực sự gọi chức năng đó. Chìa khóa ở đây là
onClick="App.validate[]"
Bằng cách thêm
TypeError
5 sau khi xác thực, mã của bạn sẽ ngay lập tức gọi TypeError
6 khi tải trang -- giá trị trả về của TypeError
7 là giá trị thực sự được đặt là TypeError
8. Nếu bạn thay đổi nó thànhonClick="App.validate"
thì bạn sẽ chuyển chính hàm đó thay vì giá trị trả về của nó
Chỉnh sửa. Điều đó nói rằng, bạn nên kiểm tra kỹ xem chức năng của bạn có thực sự tồn tại không. Hãy thử thêm một thẻ tập lệnh gọi hàm với một số đầu vào mẫu và sau đó ghi nhật ký
Nếu dòng đầu tiên in ra chức năng của bạn và dòng thứ hai hoạt động chính xác, thì bạn nên bắt đầu. Nếu không, thì chức năng không tồn tại ở nơi bạn nghĩ và bây giờ bạn biết nơi cần tìm tiếp theo trong quy trình gỡ lỗi của mình
Lỗi Javascript
TypeError
9 xảy ra khi có nỗ lực gọi một hàm trên một giá trị hoặc đối tượng không thực sự là một hàmThông báo lỗi
TypeError: "x" is not a function
Loại lỗi
TypeError
Nguyên nhân gây ra TypeError. "x" không phải là một chức năng
Một
TypeError
9 trong Javascript thường xảy ra ở một trong các trường hợp sau- Một lỗi đánh máy trong một lệnh gọi hàm
- Thiếu thư viện tập lệnh
- Khi một chức năng được gọi trên một thuộc tính không thực sự là một chức năng
- Một
9 xảy ra khi một hàm được gọi trên một đối tượng không chứa hàm được gọiTypeError
- Khi gọi một hàm tích hợp mong đợi một đối số hàm gọi lại không tồn tại
- Khi hàm được gọi nằm trong phạm vi không thể truy cập được
LoạiLỗi. "x" không phải là một chức năng Ví dụ
1. đánh máy
Một kịch bản điển hình cho sự cố
TypeError
9 xảy ra là khi có lỗi đánh máy trong tên hàm được gọivar elem = document.getElementByID['ID'];
Chạy đoạn mã trên dẫn đến lỗi Javascript sau
TypeError: document.getElementByID is not a function
Tên hàm chính xác là
TypeError
3________số 82. Đối tượng không chứa chức năng
Một nguyên nhân phổ biến khác của
TypeError
9 là khi một hàm được gọi là một đối tượng không thực sự chứa hàm đóvar foo = {
bar: function[] {
console.log["bar called"];
}
};
foo.baz[];
Trong ví dụ trên, đối tượng
TypeError
5 chứa hàm TypeError
6. Tuy nhiên, đoạn mã trên cố gắng gọi hàm TypeError
7, mà hàm TypeError
5 không chứa. Chạy đoạn mã trên dẫn đến TypeError
9 sauonClick="App.validate"
5Nếu mã Javascript được sửa đổi để gọi đúng chức năng
TypeError
6onClick="App.validate"
7Đầu ra chính xác được tạo ra
onClick="App.validate"
8
Cách khắc phục Javascript TypeError. "x" không phải là một chức năng
TypeError
9 có thể được sửa bằng các gợi ý sau- Chú ý đến chi tiết trong mã và giảm thiểu lỗi chính tả
- Nhập các thư viện tập lệnh chính xác và có liên quan được sử dụng trong mã
- Đảm bảo thuộc tính được gọi của một đối tượng thực sự là một hàm
- Đảm bảo các đối tượng chứa chức năng được gọi để tránh
9TypeError
- Đảm bảo các chức năng được chuyển vào dưới dạng cuộc gọi lại tồn tại
- Đảm bảo các chức năng được gọi nằm trong phạm vi chính xác và có thể truy cập được
Theo dõi, phân tích và quản lý lỗi với Rollbar
Quản lý lỗi và ngoại lệ trong mã của bạn là một thách thức. Nó có thể làm cho việc triển khai mã sản xuất trở thành một trải nghiệm đáng sợ. Khả năng theo dõi, phân tích và quản lý lỗi trong thời gian thực có thể giúp bạn tiến hành một cách tự tin hơn. Rollbar tự động theo dõi và xử lý lỗi, giúp việc sửa lỗi Javascript trở nên dễ dàng hơn bao giờ hết. Đăng ký hôm nay
Ngoại lệ JavaScript "không phải là một hàm" xảy ra khi có nỗ lực gọi một giá trị từ một hàm, nhưng giá trị đó không thực sự là một hàm
Thông điệp
onClick="App.validate"
9loại lỗi
01Có chuyện gì?
Nó đã cố gọi một giá trị từ một hàm, nhưng giá trị đó không thực sự là một hàm. Một số đoạn mã mong bạn cung cấp một chức năng, nhưng điều đó đã không xảy ra
Có lẽ có một lỗi đánh máy trong tên chức năng?
Có nhiều chức năng tích hợp cần chức năng [gọi lại]. Bạn sẽ phải cung cấp một hàm để các phương thức này hoạt động bình thường
- Khi làm việc với các đối tượng
04 hoặc
06
07,
08,
09,
90,
91,
92,
93,
94
- Khi làm việc với các đối tượng
95 và
96
97 và
98
ví dụ
Một lỗi đánh máy trong tên chức năng
Trong trường hợp này, điều xảy ra quá thường xuyên, có một lỗi đánh máy trong tên phương thức
0Tên hàm chính xác là
99
9Chức năng được gọi trên đối tượng sai
Đối với một số phương pháp nhất định, bạn phải cung cấp chức năng [gọi lại] và chức năng này sẽ chỉ hoạt động trên các đối tượng cụ thể. Trong ví dụ này,
90 được sử dụng, sẽ chỉ hoạt động với các đối tượng
04TypeError
3Sử dụng một mảng thay thế
TypeError
4Hàm chia sẻ tên với thuộc tính có sẵn
Đôi khi khi tạo một lớp, bạn có thể có một thuộc tính và một hàm trùng tên. Khi gọi hàm, trình biên dịch nghĩ rằng hàm không còn tồn tại