Ngoại lệ JavaScript "biến không được xác định" xảy ra khi có biến không tồn tại được tham chiếu ở đâu đó.Thông điệp
ReferenceError: "x" is not defined [V8-based & Firefox]
ReferenceError: Can't find variable: x [Safari]
Loại lỗi
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.
Lưu ý: Khi tải thư viện [chẳng hạn như jQuery], hãy đảm bảo 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 phần tử tải thư viện trước mã của bạn sử dụng nó. When loading a library [such as jQuery], make sure it is loaded before you access library variables, such as "$". Put the
element that loads the library
before your code that uses it.
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 pháp
foo.substring[1]; // ReferenceError: foo is not defined
0 sẽ hoạt động.const 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 thi 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 cứ nơi nào 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[] {
const num1 = 2;
const 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.
const num1 = 2;
const num2 = 3;
function numbers[] {
return num1 + num2;
}
console.log[numbers[]]; // 5
Xem thêm
JavaScript
foo.substring[1]; // ReferenceError: foo is not defined
1 xảy ra khi tham chiếu một biến không tồn tại hoặc chưa được khởi tạo trong phạm vi hiện tại. Các lỗi tham chiếu trong JavaScript có một vài loại khác nhau, với các biến thể của mỗi loại, có thể được kích hoạt trong mã. Một số trong số này được thảo luận dưới đây.Điều gì gây ra sự tham chiếu của JavaScript
JavaScript
foo.substring[1]; // ReferenceError: foo is not defined
1 được ném khi một nỗ lực được thực hiện để tham chiếu một biến không tồn tại hoặc ngoài phạm vi. Có một vài loại lỗi tham chiếu trong JavaScript với các biến thể khác nhau của mỗi loại. Một số trong số này là:- Các biến không được xác định - không xác định một biến trước khi tham chiếu đây là một trong những yếu tố kích hoạt phổ biến nhất cho các lỗi tham chiếu trong JavaScript.
- Các biến phạm vi - các biến được xác định bên trong phạm vi của hàm không thể được truy cập bên ngoài nó. Nếu một nỗ lực được thực hiện để tham chiếu một biến ngoài phạm vi, thì
1 sẽ bị ném.foo.substring[1]; // ReferenceError: foo is not defined
- Chế độ nghiêm ngặt - Sử dụng chế độ nghiêm ngặt trong JavaScript có thể ném
1 nếu một biến không được xác định bằng cách sử dụng các từ khóafoo.substring[1]; // ReferenceError: foo is not defined
5,foo.substring[1]; // ReferenceError: foo is not defined
6 hoặcfoo.substring[1]; // ReferenceError: foo is not defined
7. Ở đây, một ví dụ về một tuyên bố như vậy: foo = true;foo.substring[1]; // ReferenceError: foo is not defined
- Việc tham chiếu biến
8 trong mã sẽ dẫn đến việcfoo.substring[1]; // ReferenceError: foo is not defined
1 bị ném nếu sử dụng chế độ nghiêm ngặt. Lỗi sẽ không xảy ra nếu không sử dụng chế độ nghiêm ngặt.foo.substring[1]; // ReferenceError: foo is not defined
- REDECLARATION biến đổi - Các biến tái tạo bằng cách sử dụng các từ khóa sai cũng có thể ném
1. Ví dụ: ban đầu khai báo một biến bằng cách sử dụngfoo.substring[1]; // ReferenceError: foo is not defined
6 và sau đó được điều chỉnh lại bằng cách sử dụngfoo.substring[1]; // ReferenceError: foo is not defined
6 một lần nữa némfoo.substring[1]; // ReferenceError: foo is not defined
1.foo.substring[1]; // ReferenceError: foo is not defined
Ví dụ về HERSEROR
Dưới đây, một ví dụ về JavaScript
const foo = 'bar';
foo.substring[1]; // "ar"
4thrown khi tham khảo một biến nằm ngoài phạm vi:function text[] {
var str = "Hello World";
return str;
}
console.log[str];
Trong ví dụ trên, biến
const foo = 'bar';
foo.substring[1]; // "ar"
5 được xác định bên trong hàm const foo = 'bar';
foo.substring[1]; // "ar"
6 và được tham chiếu bên ngoài hàm. Vì const foo = 'bar';
foo.substring[1]; // "ar"
5 chỉ được xác định trong phạm vi của hàm, nên việc tham chiếu nó từ bên ngoài hàm gây ra foo.substring[1]; // ReferenceError: foo is not defined
1:Uncaught ReferenceError: str is not defined
Cách sửa lỗi tham chiếu
Các lỗi tham chiếu trong JavaScript chủ yếu được ném khi một nỗ lực được thực hiện để tham chiếu một biến không tồn tại hoặc nằm ngoài phạm vi. Do đó, trong phần lớn các trường hợp,
foo.substring[1]; // ReferenceError: foo is not defined
1 có thể được sửa bằng cách đảm bảo rằng biến được tham chiếu được xác định chính xác và đang được gọi trong phạm vi chính xác.Ví dụ trước đó có thể được cập nhật để khắc phục
foo.substring[1]; // ReferenceError: foo is not defined
1 bằng cách xác định biến const foo = 'bar';
foo.substring[1]; // "ar"
5 trong phạm vi toàn cầu:var str = "Hello World";
function text[] {
return str;
}
console.log[text[]];
Do hàm
const foo = 'bar';
foo.substring[1]; // "ar"
6 được xác định trong phạm vi toàn cầu, nó có thể truy cập các biến được xác định trong phạm vi toàn cầu. Do đó, chạy mã trên tạo ra đầu ra chính xác như mong đợi:Hello World
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 một trải nghiệm đáng sợ. Có thể theo dõi, phân tích và quản lý các lỗi trong thời gian thực có thể giúp bạn tiến hành tự tin hơn. Rollbar tự động hóa việc theo dõi và xử lý lỗi, làm cho việc sửa lỗi JavaScript dễ dàng hơn bao giờ hết. Hãy đăng ký ngay hôm nay!