ReferenceError: "x" is not defined
Ngoại lệ JavaScript "variable is not defined" xảy ra khi có tham chiếu đến một biến không tồn tại ở đâu đó.
Thông báo
ReferenceError: "x" is not defined (V8-based & Firefox) ReferenceError: Can't find variable: x (Safari)
Loại lỗi
Nguyên nhân?
Có tham chiếu đến một biến không tồn tại ở đâ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 script hoặc scope hiện tại của bạn.
Note:
Khi tải một thư viện (chẳng hạn như jQuery), hãy đảm bảo rằng nó được tải trước khi bạn truy cập các biến của thư viện, chẳng hạn như "$". Đặt phần tử <script> tải thư viện trước code sử dụng nó.
Ví dụ
>Biến chưa được khai báo
foo.substring(1); // ReferenceError: foo is not defined
Biến "foo" chưa được định nghĩa ở bất kỳ đâu. Nó cần là một chuỗi để phương thức String.prototype.substring() hoạt động.
const foo = "bar";
foo.substring(1); // "ar"
Sai scope
Một biến cần có sẵn trong ngữ cảnh thực thi hiện tại. Các biến được định nghĩa bên trong một hàm không thể được truy cập từ bên ngoài hàm, vì biến chỉ được định nghĩa trong scope 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 định nghĩa trong scope mà nó được định nghĩa. Nói cách khác, một hàm được định nghĩa trong scope toàn cục có thể truy cập tất cả các biến được định nghĩa trong scope toàn cục.
const num1 = 2;
const num2 = 3;
function numbers() {
return num1 + num2;
}
console.log(numbers()); // 5