Ngoại lệ JavaScript "biến không được xác định" xảy ra khi có một biến không tồn tại được tham chiếu ở đâu đó
Thông điệp
ReferenceError: "x" is not defined
loại lỗi
foo.substring[1]; // ReferenceError: foo is not defined2
Có chuyện gì?
Có một biến không tồn tại được tham chiếu ở đâu đó. Biến này cần được khai báo hoặc bạn cần đảm bảo rằng nó có sẵn trong tập lệnh hoặc phạm vi hiện tại của bạn
Ghi chú. Khi tải một thư viện [chẳng hạn như jQuery], đảm bảo rằng nó đã được tải trước khi bạn truy cập các biến thư viện, chẳng hạn như "$". Đặt thẻ
foo.substring[1]; // ReferenceError: foo is not defined3 tải thư viện trước mã của bạn sử dụng nó
ví dụ
Biến không được khai báo
foo.substring[1]; // ReferenceError: foo is not defined
Biến "foo" không được xác định ở bất cứ đâu. Nó cần phải là một số chuỗi để phương thức
foo.substring[1]; // ReferenceError: foo is not defined4 hoạt động
var foo = 'bar'; foo.substring[1]; // "ar"
phạm vi sai
Một biến cần phải có sẵn trong bối cảnh thực hiện hiện tại. Các biến được xác định bên trong một hàm không thể được truy cập từ bất kỳ đâu bên ngoài hàm, bởi vì biến chỉ được xác định trong phạm vi của hàm
function numbers[] { var num1 = 2, num2 = 3; return num1 + num2; } console.log[num1]; // ReferenceError num1 is not defined.
Tuy nhiên, một hàm có thể truy cập tất cả các biến và hàm được xác định bên trong phạm vi mà nó được xác định. Nói cách khác, một hàm được xác định trong phạm vi toàn cầu có thể truy cập tất cả các biến được xác định trong phạm vi toàn cầu
Khi lập trình bằng JavaScript, jQuery hay Angular JS, các coder thường gặp phải một lỗi mang tên Uncaught ReferenceError. $ không được xác định. Điều này thường xảy ra khi $, đó có thể là một biến hoặc một phương thức không được xác định chính xác nhưng đang được sử dụng
Trong bài viết này, chúng tôi sẽ xem xét các lý do khác nhau khiến lỗi này xảy ra và cách giải quyết nó
Nhưng trước tiên, chúng ta hãy tìm hiểu thêm một chút về lỗi này
Lỗi tham chiếu chưa bắt. lỗi $ không được xác định. Nó là gì?
Như đã đề cập trước đó, ký hiệu $ được sử dụng để biểu thị một hàm, đó là hàm jQuery[] phổ biến nhất được gọi là $[document]. sẵn sàng [chức năng[]]. Ví dụ,
jQuery["#name"].hide[]
$["#name"].hide[]
Mã được viết ở đây được sử dụng để ẩn phần tử có id=”name” bằng cách sử dụng phương thức hide[]. Trong dòng thứ hai, bạn có thể thấy rằng biểu tượng $ được sử dụng thay cho phương thức jQuery[]
Nhưng lỗi xảy ra khi bạn đang cố truy cập hoặc sử dụng một phương thức hoặc biến không được khai báo bằng ký hiệu $. Khi JavaScript chạy bên trong trình duyệt, nó sẽ báo lỗi khi một biến đang được sử dụng không được xác định. Bạn phải khai báo một biến bằng từ khóa var
Tương tự, bạn cần định nghĩa một hàm bằng từ khóa function[] {} để tránh lỗi này
Nguyên nhân lỗi
Bây giờ chúng ta hãy xem xét các nguyên nhân khác gây ra lỗi Uncaught References
Click Here
Trong mã này, bạn có thể thấy rằng jQuery được tải sau tập lệnh. Để khắc phục điều này, hãy bao gồm tệp thư viện jQuery bên trong phần đầu của tệp HTML, trước mã JavaScript. làm như sau
Click Here
4] Tệp JqueryLibrary có thuộc tính Async hoặc Defer
async là một thuộc tính Boolean. Điều này chỉ định rằng các tập lệnh sẽ được tải xuống và khi chúng gặp phải. Sau đó, chúng sẽ được thực thi khi quá trình tải xuống hoàn tất. Vì trình phân tích cú pháp HTML không bị chặn trong quá trình này nên các trang được hiển thị nhanh hơn
Không có thuộc tính này, các tệp JavaScript được chạy tuần tự. Vì vậy, tệp JS được tải xuống và thực thi, sau đó mã khác sẽ chạy. Trong thời gian này, trình phân tích cú pháp HTML sẽ bị chặn nên các trang sẽ hiển thị chậm hơn
Trong trường hợp thuộc tính trì hoãn, tập lệnh sẽ được chạy sau khi trang được phân tích cú pháp. Đây cũng là một thuộc tính Boolean được sử dụng cùng với các tập lệnh bên ngoài. Ví dụ,
________số 8Bởi vì các thuộc tính này làm cho tệp thư viện jQuery tải ở chế độ không đồng bộ. Cách tốt nhất để tránh lỗi Uncaught Error trong trường hợp này là xóa thuộc tính async và defer
5] Xung đột với các thư viện khác như [nguyên mẫu. js, MooTools hoặc YUI]
jQuery sử dụng $ làm lối tắt cho jQuery. Do đó, nếu bạn đang sử dụng một thư viện JavaScript khác sử dụng biến $, bạn có thể gặp xung đột với jQuery
Để khắc phục sự cố này, bạn cần đặt jQuery ở chế độ không xung đột sau khi được tải. Ví dụ,
Trong đoạn mã được viết ở trên, $ sẽ đề cập đến ý nghĩa ban đầu của nó. Bạn sẽ có thể sử dụng bí danh $j và tên hàm jQuery
Có một giải pháp khác, bạn có thể thêm mã này vào đầu trang chỉ mục của mình
Mã chính xác
________số 86] Sự cố trình cắm jQuery trong WordPress
Trong khi sử dụng jQuery với WordPress, Uncaught ReferenceError. jQuery không được xác định là một lỗi rất phổ biến. Lỗi này có thể tắt trang web WordPress của bạn. Vì vậy, lỗi này là cơn ác mộng đối với các nhà phát triển web
Có một vài lý do cho lỗi này. Trong số đó, những lý do phổ biến nhất là khi hai hoặc nhiều plugin jQuery xung đột với nhau. Ví dụ: một trình cắm cũ được viết bằng jQuery có thể có ký hiệu $ đại diện cho tên riêng của nó. Nhưng trong một plug-in của bên thứ ba khác, ký hiệu $ có thể không được sử dụng làm phím tắt cho jQuery và có thể có giá trị khác
Vì cả hai giá trị của $ không thể tồn tại đồng thời trong cùng một chương trình nên sẽ xảy ra lỗi Uncaught Error
Dung dịch
- Để tránh điều này, hãy đảm bảo rằng thư viện jQuery được tải trước JavaScript. Ngoài ra, hãy đảm bảo rằng phiên bản jQuery mới nhất được tải trên hệ thống của bạn
- Thư viện jQuery đã có sẵn trong WordPress nên bạn không cần phải thêm nó bằng CDN hoặc URL được lưu trữ. Bạn có thể sử dụng hàm wp_enqueue_script[] để đưa jQuery vào tệp của mình
Phần kết luận
Tham chiếu UncaughtError. $ không được xác định có thể tránh được nếu bạn ghi nhớ các điểm được đề cập ở trên. Một lý do khác gây ra lỗi là khi đường dẫn jQuery mà bạn đã cung cấp không chính xác. Có thể có lỗi đánh máy trong đường dẫn hoặc tệp có thể đã bị xóa khỏi vị trí bạn đã chỉ định. Vì vậy, hãy đảm bảo các tệp jQuery của bạn được đặt đúng chỗ. Và nếu bạn đang sử dụng phiên bản trực tuyến, hãy kiểm tra xem internet có hoạt động không để tránh mọi sự cố