localStorage仅支持字符串存储,需JSON编码/解码、类型转换及try-catch容错;读取须校验null与JSON有效性并设默认值;配合时间戳、手动导出、降级策略和storage事件可增强离线体验,但不适用于敏感信息、大文件、跨设备同步及高频写入场景。
localStorage 能让网页在离线时继续使用部分功能,但它不是“真正离线”的万能方案——它只保存数据,不处理网络状态、同步冲突或服务端逻辑。关键在于:存得稳、读得准、出错有退路。
localStorage 只认字符串,直接塞对象或数字会丢数据:
localStorage.setItem('count', String(42))),读取时用 parseInt() 或 parseFloat() 还原QuotaExceededError(存储满)、DOMException(无痕模式禁用等)getItem 返回 null 不代表“没存”,可能只是被清空或失效:
localStorage.getItem('key') !== null,而不是 if (localStorage.getItem('key'))(因为 "0"、"false" 都是真值)JSON.parse(null) 报错const theme = JSON.parse(localStorage.getItem('theme') || '"light"')
单靠 localStorage 容易在真实用户场景中“掉链子”:
savedAt: Date.now(),业务层可判断是否过期(比如缓存 24 小时)localStorage 适合轻量、非敏感、同源的本地缓存,不适合: