localStorage是前端基于字符串键值对的持久化存储,提供setItem、getItem、removeItem、clear四个方法,支持跨会话保存数据,但受同源策略限制且容量约5MB。

localStorage 是前端最常用、最直接的持久化存储方式,数据关掉浏览器也不会丢,适合存用户偏好、表单草稿、登录态等需要跨会话保留的信息。
基础操作:存、取、删、清
它只提供四个核心方法,全部基于字符串键值对:
-
存数据:用
localStorage.setItem(key, value),value 必须是字符串。比如localStorage.setItem('theme', 'dark') -
读数据:用
localStorage.getItem(key),返回对应字符串;key 不存在时返回null,不是undefined -
删单条:用
localStorage.removeItem(key),精准清除某一项 -
清空全部:用
localStorage.clear(),慎用,会影响所有同源页面的数据
存对象或数组:必须序列化
localStorage 只接受字符串作为值,所以存对象或数组前得转成 JSON 字符串,读取时再解析回来:
- 存:
localStorage.setItem('user', JSON.stringify({ name: 'Alice', age: 28 })) - 取:
const user = JSON.parse(localStorage.getItem('user')) - 注意:如果 getItem 返回
null,直接 parse 会报错,建议加判断:const data = localStorage.getItem('user'); const user = data ? JSON.parse(data) : null;
同源限制与容量注意
数据只能被相同协议、域名、端口的页面访问(比如 https://a.com 和 http://a.com 不互通);容量通常为 5MB 左右,超限时会抛出 QuotaExceededError。实际使用中建议:
立即学习“Java免费学习笔记(深入)”;
- 避免存大量日志或原始图片(可转 base64 后存,但要评估体积)
- 关键数据写入前可简单兜底:
if (typeof localStorage !== 'undefined')防止低版本或禁用场景 - 敏感信息(如 token)不建议长期存 localStorage,易被 XSS 窃取;短期可用,但优先考虑 httpOnly Cookie + 后端校验
实用小技巧
除了标准 API,还可以用属性访问方式读写(不推荐用于生产,兼容性和语义性不如 setItem/getItem):
-
localStorage.myKey = 'value'→ 等价于setItem -
const val = localStorage.myKey→ 等价于getItem - 但删除必须用
removeItem或delete localStorage.myKey(后者在部分旧浏览器不生效)


















