html个人页面怎么加本地存储_htmllocalStorage应用法【存储】

14次阅读

localStorage只能存储字符串,存对象jsON.Stringify(),读取后需json.parse()并判空;其作用域为完整origin(协议+域名+端口),不跨域也不跨协议;删除应避免clear(),优先用removeItem()精准清理。

html个人页面怎么加本地存储_htmllocalStorage应用法【存储】

localStorage.setItem() 写入数据前必须转成字符串

localStorage 只接受 string 类型的值,直接存对象或数组会变成 [Object Object],,,,读出来就废了。常见错误是:localStorage.setItem('user', {name: 'Alice'})——这行代码看着没报错,但实际存进去的是 [object Object]

正确做法是用 JSON.stringify() 序列化:

localStorage.setItem('user', JSON.stringify({name: 'Alice', age: 28}));

注意:undefined、函数、date 对象、regexp 等无法被 JSON.stringify() 正常处理,存之前得手动转换(比如 new Date().toISOString())。

localStorage.getItem() 读取后记得 JSON.parse()

读出来的永远是字符串,不解析就直接当对象用,会出各种奇怪问题,比如 user.nameundefined,但 typeof user 却是 string

立即学习前端免费学习笔记(深入)”;

安全读取模式:

const userStr = localStorage.getItem('user');
const user = userStr ? JSON.parse(userStr) : NULL;

加空值判断很重要——用户第一次访问时 getItem() 返回 null,直接 JSON.parse(null) 会报 SyntaxError

localStorage 在页面刷新后依然存在,但不跨域也不跨协议

这是本地存储最常被误解的一点:它绑定在完整的 origin 上,即 协议 + 域名 + 端口。比如:

  • http://localhost:3000http://localhost:3001 是两个独立的存储空间
  • https://example.comhttp://example.com 互不可见
  • file:/// 协议下大多数浏览器会禁用 localStoragechrome 直接报 SecurityError

开发时如果用双击 html 文件方式打开,localStorage 很可能根本不起作用——必须起一个本地服务(比如 python -m http.server)。

删数据别只靠 clear(),按需用 removeItem()

localStorage.clear() 是“一键清空”,适合调试,但上线后千万别写在生产逻辑里——一不小心就把用户所有偏好设置全干掉了。

更稳妥的做法是精准删除:

  • 单个键:localStorage.removeItem('theme')
  • 多个键:自己封装循环,比如 ['cart', 'recentSearch'].forEach(key => localStorage.removeItem(key))
  • 想清空但留一部分?先读出来,过滤再重写:const keep = ['token', 'userId']; const all = {...}; Object.keys(all).filter(k => !keep.includes(k)).forEach(k => localStorage.removeItem(k))

另外注意:localStorage 没有过期机制,存进去的东西除非手动删或用户清除浏览数据,否则一直都在——敏感信息(如 Token)别长期裸存。

text=ZqhQzanResources