Cả hai là kho key-value cùng API (setItem, getItem, removeItem, clear), chỉ lưu chuỗi, dung lượng ~5–10MB, đồng bộ, gắn theo origin. Khác nhau ở vòng đời và phạm vi:
localStorage: tồn tại vô thời hạn đến khi xóa thủ công. Chia sẻ giữa mọi tab/cửa sổ cùng origin.sessionStorage: sống theo từng tab, mất khi đóng tab. Không chia sẻ sang tab khác (kể cả cùng origin).
Vì chỉ lưu string nên object phải JSON.stringify khi ghi và JSON.parse khi đọc.
js
localStorage.setItem("user", JSON.stringify({ id: 1 }))
JSON.parse(localStorage.getItem("user"))