Trong JavaScript, nullundefined đều là các giá trị đặc biệt dùng để biểu thị sự vắng mặt của giá trị, nhưng chúng có những đặc điểm và cách sử dụng khác nhau. Dưới đây là sự phân tích chi tiết về sự khác nhau giữa nullundefined.

Định Nghĩa

undefined là một kiểu dữ liệu biểu thị rằng một biến đã được khai báo nhưng chưa được gán giá trị. Khi bạn khởi tạo một biến mà không gán giá trị cho nó, giá trị mặc định của nó sẽ là undefined.

let x; // x được khai báo nhưng chưa được gán giá trị
console.log(x); // Kết quả: undefined

Ngoài ra, khi một hàm không trả về giá trị, nó cũng sẽ trả về undefined mặc định.

function doNothing() {}
console.log(doNothing()); // Kết quả: undefined

null là một giá trị đại diện cho “không có giá trị” hoặc “giá trị rỗng”. Khi bạn muốn chỉ ra rõ ràng rằng một biến không chứa giá trị nào, bạn có thể gán cho nó giá trị null.

let y = null; // y được khởi tạo với giá trị null
console.log(y); // Kết quả: null

Kiểu Dữ Liệu

Khi kiểm tra kiểu dữ liệu của undefinednull, chúng có những kết quả khác nhau.

undefined có kiểu dữ liệu là undefined:

console.log(typeof undefined); // Kết quả: "undefined"

null lại được coi là một đối tượng trong JavaScript, mặc dù điều này có thể gây nhầm lẫn:

console.log(typeof null); // Kết quả: "object"

Sử Dụng

undefined thường được sử dụng để kiểm tra xem một biến đã được khởi tạo hay chưa. Khi bạn sử dụng biến mà không gán giá trị, JavaScript sẽ tự động gán cho nó giá trị undefined. Điều này rất hữu ích trong các tình huống cần xác định xem một biến có giá trị hay không.

let z;
if (z === undefined) {
    console.log('z chưa được gán giá trị.'); // Kết quả: z chưa được gán giá trị.
}

Ngược lại, null được sử dụng để chỉ định rằng một biến đã được khởi tạo nhưng không có giá trị. Điều này cho phép lập trình viên rõ ràng chỉ ra rằng một biến có thể có giá trị, nhưng hiện tại nó không chứa dữ liệu.

let obj = {
    name: null // Đặt name là null để biểu thị không có giá trị
};
console.log(obj.name); // Kết quả: null

So Sánh

Khi so sánh nullundefined, chúng có cách hành xử khác nhau tùy thuộc vào loại so sánh mà bạn sử dụng.

Khi so sánh với == (toán tử bằng lỏng), nullundefined được coi là bằng nhau:

console.log(null == undefined); // Kết quả: true

Khi so sánh với === (toán tử bằng chặt chẽ), chúng không bằng nhau vì chúng có kiểu khác nhau:

console.log(null === undefined); // Kết quả: false

Kết Luận

  • undefined là giá trị mặc định cho các biến chưa được gán giá trị, trong khi null là giá trị rõ ràng biểu thị rằng một biến đã được khởi tạo nhưng không chứa giá trị.
  • undefined có kiểu dữ liệu là undefined, trong khi null có kiểu dữ liệu là object.
  • Việc hiểu rõ sự khác biệt giữa nullundefined là quan trọng để viết mã chính xác và tránh nhầm lẫn trong quá trình lập trình.

Hiểu biết về hai giá trị này sẽ giúp bạn xử lý các tình huống liên quan đến dữ liệu một cách hiệu quả hơn trong JavaScript.