javascript本地存储怎么用_如何使用localStorage【教程】
发布时间 - 2026-01-27 00:00:00 点击率:次localStorage只能存储字符串,存对象或数组需JSON.stringify()和JSON.parse(),基本类型会隐式转为字符串,取值后需手动转换,无过期机制,容量5–10MB,敏感信息不宜单独存放。
localStorage 不是万能的,它只能存字符串,所有值都会被自动转成字符串;想存对象或数组,必须自己 JSON.stringify() 和 JSON.parse()。
怎么存和取基本数据(字符串、数字、布尔)
直接用 localStorage.setItem() 和 localStorage.getItem() 即可,但要注意:数字、布尔值会被隐式转

例如:
localStorage.setItem('count', 42); // 存数字
localStorage.setItem('active', true); // 存布尔
console.log(localStorage.getItem('count')); // "42"(字符串)
console.log(localStorage.getItem('active')); // "true"(字符串)
- 如果需要保持原始类型,必须手动转换:
Number(localStorage.getItem('count'))或JSON.parse(localStorage.getItem('active')) - 不推荐依赖隐式转换,容易在条件判断中出错(比如
"false"是真值) -
localStorage无过期机制,存进去就一直留着,除非手动删或用户清缓存
怎么安全地存对象或数组
不能直接 localStorage.setItem('user', {name: 'Alice'}),会变成 "[object Object]" —— 这是最常见的误用。
必须显式序列化和反序列化:
const user = { name: 'Alice', age: 30 };
localStorage.setItem('user', JSON.stringify(user)); // ✅
const saved = localStorage.getItem('user');
const parsed = saved ? JSON.parse(saved) : null; // ✅ 防空判断
- 务必加
try...catch包裹JSON.parse(),否则后端改了格式或手动编辑过 localStorage 会导致脚本中断 - 嵌套过深或含函数、undefined、Date 对象等无法被
JSON.stringify()序列化的值,会丢失或报错 - 如果需要存 Date,先转成 ISO 字符串:
new Date().toISOString()
怎么删、清、查有没有某个键
删单个用 localStorage.removeItem(),清空用 localStorage.clear(),检查是否存在建议用 localStorage.getItem(key) !== null(而不是 in 或 hasOwnProperty,因为它是 Storage 实例,不是普通对象)。
-
localStorage.removeItem('token')—— 删除指定键 -
localStorage.clear()—— 清掉当前域名下所有 localStorage(慎用,影响其他功能) -
if (localStorage.getItem('theme') !== null) { ... }—— 最稳妥的存在性判断 - 不要用
'theme' in localStorage,它返回true即使值是null或空字符串
localStorage 的边界和替代选择
单域名下容量通常为 5–10MB(Chrome 约 10MB,Safari 移动端仅 2.5MB),但写入大体积数据会阻塞主线程,且没有事件通知机制。
- 超过几 MB 就该考虑
IndexedDB,尤其要存二进制、大量结构化数据时 - 敏感信息(如 token)别只靠 localStorage,它不防 XSS;应配合 HttpOnly Cookie + 后端校验
- 同源限制严格:子域名之间不共享,
https://a.example.com和https://b.example.com互不可见 - 私密模式下部分浏览器会禁用或重置 localStorage,首次加载可能为空
真正难的不是语法,而是什么时候不该用它——比如实时同步、多标签协同、大文件缓存,这些场景 localStorage 都撑不住。
# javascript
# java
# js
# json
# cookie
# 浏览器
# safari
# 后端
# 隐式转换
# chrome
# xss
# Object
# NULL
# if
# count
# date
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Swift中循环语句中的转移语句 break 和 continue
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
如何在Tomcat中配置并部署网站项目?
UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】
个人摄影网站制作流程,摄影爱好者都去什么网站?
EditPlus中的正则表达式实战(6)
怎样使用JSON进行数据交换_它有什么限制
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
原生JS获取元素集合的子元素宽度实例
C++时间戳转换成日期时间的步骤和示例代码
高防服务器租用首荐平台,企业级优惠套餐快速部署
如何正确下载安装西数主机建站助手?
深入理解Android中的xmlns:tools属性
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
Thinkphp 中 distinct 的用法解析
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
javascript如何操作浏览器历史记录_怎样实现无刷新导航
如何实现javascript表单验证_正则表达式有哪些实用技巧
Laravel如何实现一对一模型关联?(Eloquent示例)
如何快速生成专业多端适配建站电话?
非常酷的网站设计制作软件,酷培ai教育官方网站?
Laravel如何实现文件上传和存储?(本地与S3配置)
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
如何彻底卸载建站之星软件?
制作电商网页,电商供应链怎么做?
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
如何构建满足综合性能需求的优质建站方案?
想要更高端的建设网站,这些原则一定要坚持!
如何快速上传建站程序避免常见错误?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
如何快速搭建自助建站会员专属系统?
Laravel Fortify是什么,和Jetstream有什么关系
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
如何在阿里云ECS服务器部署织梦CMS网站?
如何在IIS服务器上快速部署高效网站?
如何确保西部建站助手FTP传输的安全性?
如何快速查询网址的建站时间与历史轨迹?
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
微信小程序 配置文件详细介绍
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
Laravel如何与Pusher实现实时通信?(WebSocket示例)
佛山网站制作系统,佛山企业变更地址网上办理步骤?
Laravel观察者模式如何使用_Laravel Model Observer配置
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
浅谈redis在项目中的应用
如何在香港免费服务器上快速搭建网站?
Laravel怎么清理缓存_Laravel optimize clear命令详解

