Sử dụng null và sự khác biệt với undefined trong JavaScript

Trong JavaScript, `null` là một giá trị đặc biệt biểu thị "không có" hoặc "tham chiếu rỗng". Dưới đây là chi tiết cách sử dụng nó:

1. Định nghĩa và kiểu dữ liệu

  • Kiểu dữ liệu: `null` là một kiểu dữ liệu cơ bản, nhưng `typeof null` trả về `"object"` (vấn đề lịch sử). Nó được xem như điểm kết thúc của chuỗi nguyên mẫu đối tượng.
  • Nghĩa: Biểu thị rõ ràng rằng biến không trỏ đến bất kỳ đối tượng nào, hoặc do lập trình viên thiết lập giá trị "rỗng".

2. Sử dụng phổ biến

Khởi tạo biến

let vehicle = null; // Sau này có thể gán giá trị cho đối tượng
vehicle = { model: "Tesla" };

Tự giải phóng tham chiếu đối tượng

let info = fetchData(); // Giả sử trả về một đối tượng lớn
// Sau khi sử dụng xong, giải phóng
info = null;

Giá trị trả về của hàm

function searchItem(itemId) {
  if (!itemExists(itemId)) return null;
  // Trả về đối tượng nếu tồn tại
}

Tham số của hàm

function displayItem(item) {
  if (item === null) {
    console.log("Không có mục nào");
  }
}
displayItem(null);

3. Sự khác biệt với `undefined`

**Đặc tính** **`null`** **`undefined`**
**Nguồn gốc** Lập trình viên gán trực tiếp Biến chưa được gán, hàm không có giá trị trả về
**Kiểu dữ liệu** `typeof null` → `"object"` `typeof undefined` → `"undefined"`
**Tương đương** `null == undefined` → `true` `null === undefined` → `false`

4. Lưu ý

Kiểm tra kiểu dữ liệu

if (value === null) {
  // Xử lý trường hợp null cụ thể
}

Bộ lọc JSON

JSON.stringify({ a: null, b: undefined }); // '{"a":null}'

Xử lý tham số mặc định

function welcome(user = "Guest") {
  console.log(`Xin chào, ${user}!`);
}
welcome(null);      // "Xin chào, null!"
welcome(undefined); // "Xin chào, Guest!"

5. Ví dụ mã nguồn

// Khởi tạo biến
let gadget = null;
gadget = { type: "Smartphone" };

// Giải phóng tham chiếu
gadget = null;

// Hàm trả về null
function findElement(id) {
  return document.getElementById(id) || null;
}

// Truyền null vào tham số
setTimeout(() => {}, null); // Tham số thứ hai thường bị bỏ qua, nhưng truyền null để chỉ ra giá trị trống

Thẻ: JavaScript null undefined khởi tạo_biến garbage_collection

Đăng vào ngày 29 tháng 5 lúc 02:45