Để kiểm tra xem một khóa (key) có tồn tại trong localStorage hay không, có 2 cách phổ biến:
Cách 1: Dùng getItem() và so sánh với null
if (localStorage.getItem("user") === null) {
// Khóa "user" KHÔNG tồn tại
} else {
// Khóa "user" TỒN TẠI
var userData = localStorage.getItem("user");
}
getItem(key) trả về null nếu khóa không tồn tại, ngược lại trả về giá trị (string).
Cách 2: Dùng toán tử in (ngắn gọn hơn)
if ("user" in localStorage) {
alert('Có khóa "user"');
} else {
alert('Không có khóa "user"');
}
Toán tử in kiểm tra sự tồn tại của property trên object localStorage.
So sánh 2 cách
| Tiêu chí | getItem() === null | "key" in localStorage |
|---|---|---|
| Độ dài code | Dài hơn | Ngắn gọn |
| Đọc được giá trị | Có (trong cùng lệnh) | Không (chỉ check tồn tại) |
| Hiệu năng | Tương đương | Tương đương |
| Khuyến nghị | Khi cần lấy giá trị ngay | Khi chỉ cần check boolean |
Các thao tác khác với localStorage
// Lưu dữ liệu (chỉ lưu string)
localStorage.setItem("key", "value");
localStorage.setItem("user", JSON.stringify({name: "An", age: 25}));
// Lấy dữ liệu
var val = localStorage.getItem("key");
var user = JSON.parse(localStorage.getItem("user"));
// Xóa 1 khóa
localStorage.removeItem("key");
// Xóa TẤT CẢ
localStorage.clear();
// Số lượng khóa
var count = localStorage.length;
// Lấy khóa theo index
var keyName = localStorage.key(index);
Lưu ý quan trọng
- localStorage chỉ lưu string. Object/Array phải
JSON.stringify()trước khi lưu. - Dung lượng giới hạn: ~5-10MB tùy trình duyệt.
- Chỉ truy cập được từ cùng origin (protocol + domain + port).
- Không có expiration time (khác với cookie).