Trong JavaScript, null, undefined, và undeclared là ba khái niệm khác nhau liên quan đến biến hoặc giá trị. Mỗi khái niệm có những đặc điểm riêng, và hiểu được sự khác biệt giữa chúng là rất quan trọng khi làm việc với JavaScript. Dưới đây là giải thích chi tiết:

1. undefined

undefined là giá trị mặc định mà JavaScript gán cho một biến khi biến đó đã được khai báo nhưng chưa được gán giá trị. Nó cũng có thể được trả về khi truy cập vào một thuộc tính không tồn tại của một đối tượng hoặc không truyền đối số cho một hàm mà hàm đó yêu cầu.

Đặc điểm:

  • Biến đã được khai báo nhưng chưa gán giá trị sẽ có giá trị undefined.
  • undefined là một kiểu dữ liệu trong JavaScript.
  • Truy cập một thuộc tính không tồn tại của một đối tượng cũng sẽ trả về undefined.

Ví dụ:

let x;
console.log(x); // undefined

let obj = {};
console.log(obj.name); // undefined

2. null

null là một giá trị rỗng (empty) hoặc không có giá trị (no value). Nó thường được sử dụng khi muốn cố ý chỉ định rằng một biến không có giá trị hoặc cần phải khởi tạo biến mà không có giá trị ngay lập tức. Không giống như undefined, null thường được gán thủ công bởi lập trình viên.

Đặc điểm:

  • null là một giá trị được lập trình viên cố ý gán để chỉ rằng không có giá trị.
  • null là một đối tượng trong JavaScript (kiểu dữ liệu object).

Ví dụ:

let y = null;
console.log(y); // null

3. undeclared

undeclared đề cập đến một biến chưa được khai báo. Nếu cố gắng truy cập một biến chưa được khai báo, JavaScript sẽ ném ra lỗi tham chiếu (ReferenceError). Điều này khác với undefined, nơi biến đã được khai báo nhưng chưa có giá trị.

Đặc điểm:

  • Một biến chưa được khai báo sẽ dẫn đến lỗi khi cố gắng truy cập vào nó.
  • Sử dụng từ khóa var, let, hoặc const để khai báo biến trước khi truy cập.

Ví dụ:

console.log(z); // ReferenceError: z is not defined

Tóm Tắt Sự Khác Biệt

Khái NiệmĐã Khai BáoĐã Gán Giá TrịGiá TrịKhi Truy Cập
undefinedChưa gán giá trịundefinedKhông có lỗi
nullCó, cố ý gánnullKhông có lỗi
undeclaredKhôngKhôngKhông tồn tạiLỗi ReferenceError

Ví Dụ Minh Họa

// undefined
let a;
console.log(a); // undefined

// null
let b = null;
console.log(b); // null

// undeclared
console.log(c); // ReferenceError: c is not defined

Kết Luận

  • undefined: Mặc định khi biến được khai báo nhưng chưa có giá trị.
  • null: Giá trị rỗng do lập trình viên cố ý gán để biểu thị “không có giá trị”.
  • undeclared: Biến chưa được khai báo, khi truy cập sẽ gây lỗi.

Hiểu sự khác biệt này giúp bạn tránh các lỗi phổ biến và quản lý dữ liệu hiệu quả hơn trong JavaScript.