localstorage是浏览器提供的持久化键值存储,仅支持字符串,存对象需json.stringify()、读取需json.parse(),有容量限制、同源限制且无自动过期机制。

LocalStorage 是浏览器提供的简单键值对存储机制,数据在页面关闭甚至浏览器重启后依然保留,适合存用户偏好、登录状态等轻量级持久化信息。它只能存储字符串,所以存对象或数组时需要手动序列化和反序列化。
使用 setItem 存储数据
localStorage.setItem(key, value) 接收两个字符串参数:键名和要存储的值。如果键已存在,会覆盖原值;如果值不是字符串,会被自动转为字符串(比如 localStorage.setItem('count', 42) 实际存的是 "42")。
- 存字符串:
localStorage.setItem('theme', 'dark') - 存数字(隐式转换):
localStorage.setItem('score', 95)→ 存的是"95" - 存对象或数组:必须用
JSON.stringify()转成字符串:localStorage.setItem('user', JSON.stringify({name: 'Alice', age: 30})) - 注意:不能直接存函数、undefined、Symbol 或 Date 对象(Date 需转为字符串或时间戳)
使用 getItem 读取数据
localStorage.getItem(key) 根据键名返回对应的字符串值;如果键不存在,返回 null(不是 undefined)。
- 读字符串:
const theme = localStorage.getItem('theme')→ 返回"dark" - 读数字字符串需手动转回数字:
const score = Number(localStorage.getItem('score')) - 读对象/数组需用
JSON.parse():const user = JSON.parse(localStorage.getItem('user'))(建议加 try-catch 防解析失败) - 安全读取示例:
try {<br> const data = JSON.parse(localStorage.getItem('config') || '{}');<br>} catch (e) {<br> console.warn('配置解析失败,使用默认值');<br>}
其他实用操作
除了基础读写,还可以配合其他方法提升健壮性:
- 检查是否支持 LocalStorage:
if (typeof localStorage !== 'undefined') - 删除某项:
localStorage.removeItem('tempToken') - 清空全部:
localStorage.clear()(谨慎使用) - 查看所有键:
Object.keys(localStorage)或循环for (let i = 0; i - 监听变化(跨标签页同步):在其他窗口或标签页中修改 LocalStorage 会触发当前页面的
storage事件:window.addEventListener('storage', (e) => {<br> console.log('键', e.key, '被改为', e.newValue);<br>});
注意事项与限制
LocalStorage 看似简单,但有几个关键点容易踩坑:
- 容量限制:通常约 5–10MB(不同浏览器略有差异),超限会抛出
QuotaExceededError - 同源限制:只有相同协议、域名、端口的页面才能共享数据
- 不参与网络请求:它完全在前端运行,不会自动发给服务器
- 无过期机制:数据永久存在,需业务层自行管理生命周期(比如存时间戳判断是否过期)
- 安全性:不要存敏感信息(如密码、token),因为 JavaScript 可直接读取
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











