null
và undefined
là hai giá trị đại diện cho “không có giá trị” trong JavaScript và TypeScript, nhưng chúng có những ý nghĩa và cách sử dụng khác nhau.
So sánh null
và undefined
undefined
:- Ý nghĩa: Biểu thị rằng một biến đã được khai báo nhưng chưa được gán giá trị.
- Nguồn gốc: Đây là giá trị mặc định của các biến và thuộc tính của đối tượng chưa được khởi tạo.
- Kiểu dữ liệu:
undefined
là một kiểu dữ liệu riêng biệt.
let x;
console.log(x); // undefined
let obj = {};
console.log(obj.prop); // undefined
null
:
- Ý nghĩa: Biểu thị sự vắng mặt cố ý của bất kỳ giá trị đối tượng nào. Đây là cách để đặt giá trị của một biến thành không có giá trị hoặc “trống”.
- Nguồn gốc:
null
thường được sử dụng để làm trống hoặc xóa giá trị của một biến hoặc thuộc tính. - Kiểu dữ liệu:
null
là một giá trị đặc biệt của kiểuobject
.
let y = null;
console.log(y); // null
let obj = { prop: null };
console.log(obj.prop); // null
Khi nào sử dụng null
và undefined
Sử dụng undefined
- Khi một biến chưa được khởi tạo hoặc một thuộc tính không tồn tại.
- Khi muốn kiểm tra xem một biến hoặc thuộc tính có giá trị hay không.
let x;
if (x === undefined) {
console.log('x chưa được khởi tạo');
}
function foo() {
return;
}
console.log(foo()); // undefined
Sử dụng null
- Khi muốn biểu thị sự vắng mặt cố ý của giá trị.
- Khi cần đặt một biến hoặc thuộc tính thành “trống” hoặc “không có giá trị”.
let y = null;
if (y === null) {
console.log('y đã được gán giá trị null');
}
let person = { name: "Alice", age: 30 };
person.age = null; // Biểu thị rằng giá trị tuổi không còn tồn tại
So sánh null
và undefined
trong các phép toán
- Bằng giá trị (
==
):null
vàundefined
được coi là bằng nhau khi so sánh bằng giá trị nhưng không bằng các giá trị khác.
console.log(null == undefined); // true
console.log(null == 0); // false
console.log(undefined == 0); // false
Bằng giá trị và kiểu (===
): null
và undefined
không bằng nhau khi so sánh cả giá trị và kiểu.
console.log(null === undefined); // false
Tóm lại
undefined
thường được sử dụng để kiểm tra biến hoặc thuộc tính chưa được khởi tạo.null
được sử dụng để biểu thị rằng biến hoặc thuộc tính cố ý không có giá trị.
Việc sử dụng đúng null
và undefined
sẽ giúp mã của bạn rõ ràng và dễ bảo trì hơn.