Trong JavaScript, null
và undefined
đều biểu thị sự vắng mặt của giá trị, nhưng chúng có những ý nghĩa và cách sử dụng khác nhau. undefined
được tự động gán cho các biến chưa được khởi tạo, trong khi null
là một giá trị rỗng được lập trình viên gán có chủ đích. Hiểu rõ sự khác biệt giữa hai khái niệm này là điều quan trọng để viết mã hiệu quả và tránh lỗi trong quá trình phát triển.
1. undefined
trong JavaScript
undefined
biểu thị rằng một biến đã được khai báo nhưng chưa được gán giá trị. Điều này cũng xảy ra khi bạn truy cập vào một thuộc tính hoặc biến mà không có giá trị.
Cách sử dụng phổ biến của undefined
Khi khai báo biến nhưng chưa gán giá trị:
let x;
console.log(x); // undefined
Một hàm không trả về giá trị cụ thể sẽ trả về undefined
:
function test() {}
console.log(test()); // undefined
Truy cập thuộc tính không tồn tại trong đối tượng sẽ trả về undefined
:
let obj = {};
console.log(obj.property); // undefined
2. null
trong JavaScript
null
là một giá trị đặc biệt biểu thị rằng biến hoặc đối tượng có “giá trị rỗng” hoặc “không có giá trị” theo cách có chủ ý. Điều này có nghĩa là bạn đã gán null
cho biến để cho biết rằng biến đó hiện không có giá trị.
Cách sử dụng phổ biến của null
Khi muốn khởi tạo một biến với giá trị rỗng:
let y = null;
console.log(y); // null
Dùng null
khi cố ý gán giá trị trống cho một biến để sau này có thể gán giá trị khác:
let person = {
name: "Anh",
age: null
};
3. Sự khác biệt chính giữa null
và undefined
Nguồn gốc
undefined
được JavaScript tự động gán cho các biến, thuộc tính hoặc hàm mà không có giá trị cụ thể. Trong khi đó, null
phải được lập trình viên gán thủ công khi muốn chỉ định rằng một biến hoặc đối tượng không có giá trị.
Loại dữ liệu (Type)
undefined
có kiểu là "undefined"
:
console.log(typeof undefined); // "undefined"
null
có kiểu là "object"
:
console.log(typeof null); // "object"
So sánh bằng toán tử ==
và ===
Khi sử dụng toán tử lỏng ==
, null
và undefined
được coi là bằng nhau:
console.log(null == undefined); // true
Tuy nhiên, khi sử dụng toán tử nghiêm ngặt ===
, chúng không được coi là giống nhau vì khác loại dữ liệu:
console.log(null === undefined); // false
4. Khi nào nên sử dụng null
và undefined
?
Sử dụng undefined
khi biến chưa được khởi tạo hoặc khi cần kiểm tra xem biến đã được gán giá trị hay chưa. Sử dụng null
khi bạn cần khởi tạo biến hoặc đối tượng với một giá trị rỗng có chủ đích, và sau đó sẽ gán giá trị thực cho biến hoặc thuộc tính này.
5. Tình huống thực tế
Ví dụ khi làm việc với API, bạn có thể gặp null
để chỉ sự vắng mặt của dữ liệu trong cơ sở dữ liệu, trong khi undefined
có thể xuất hiện khi một biến chưa được khởi tạo hoặc thuộc tính không tồn tại.
Kết luận
null
và undefined
đều thể hiện sự vắng mặt của giá trị, nhưng null
là giá trị được gán có chủ ý bởi lập trình viên, còn undefined
xuất hiện khi biến chưa được khởi tạo hoặc không có giá trị.