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

ReferenceError.

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

js
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.

js
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.

js
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.

js
const num1 = 2;
const num2 = 3;

function numbers() {
  return num1 + num2;
}

console.log(numbers()); // 5

Xem thêm