javascript localStorage是什么_如何在浏览器中存储数据?
发布时间 - 2026-01-08 00:00:00 点击率:次localStorage数据永久保存、跨会话存在,sessionStorage仅限当前标签页生命周期;二者API相同但生命周期和作用域不同,均受同源策略限制且只支持字符串值,存对象需JSON.stringify/parse。
localStorage 是浏览器提供的持久化键值存储 API,数据不会过期,除非手动清除或用户主动删除。
localStorage 和 sessionStorage 有什么区别?
两者都是 window 对象上的属性,API 完全一致,但生命周期和作用域不同:
-
localStorage:数据永久保存(实际是“无自动过期”,可跨会话、重启浏览器后仍存在) -
sessionStorage:仅在当前标签页生命周期内有效,关闭该标签页即清空 - 二者都受同源策略限制(协议 + 域名 + 端口必须完全相同)
- 都不支持存储函数、undefined、Symbol 或循环引用对象
怎么存取 JSON 数据?为什么不能直接存对象?
localStorage 只接受字符串作为值。直接存对象会调用 toString(),结果是 [object Object],取出来就丢了数据。
正确做法是用 JSON.stringify() 存,JSON.parse() 取:
立即学习“Java免费学习笔记(深入)”;
const user = { name: "Alice", age: 30 };
localStorage.setItem("user", JSON.stringify(user));
const saved = localStorage.getItem("user");
const parsed = saved ? JSON.parse(saved) : null; // 注意判空,getItem 可能返回 null
常见错误:
- 没处理
getItem返回null就直接JSON.parse(null)→ 报错Unexpected token 'n' in JSON - 存了
undefined或function字段 →JSON.stringify会忽略它们,还原后字段消失 - 对象太大(超过 5–10MB,因浏览器而异)→ 触发
QuotaExceededError
怎么安全地删除或清空数据?
有三种粒度的操作方式:
- 删单个:
localStorage.removeItem("key") - 清空当前域名下所有:
localStorage.clear()(慎用,会影响其他功能模块) - 删带前缀的一批(如
app_*):需遍历localStora手动匹配
ge.key(i)
注意:clear() 不会触发 storage 事件(当前页面不会收到),但其他同源标签页会收到。
监听变化的写法:
window.addEventListener("storage", (e) => {
console.log("key:", e.key, "old:", e.oldValue, "new:", e.newValue);
});
真正难的是边界情况:比如用户开了多个标签页,一个改了 user,另一个没刷新就继续操作旧数据;或者存了时间戳但没校验有效期。这些得靠业务逻辑补足,localStorage 本身不提供版本或过期能力。
# javascript
# java
# js
# json
# 浏览器
# app
# 端口
# session
# win
# 区别
# 作用域
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何配置任务调度?(Cron Job示例)
怎么用AI帮你为初创公司进行市场定位分析?
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
免费网站制作appp,免费制作app哪个平台好?
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
轻松掌握MySQL函数中的last_insert_id()
,南京靠谱的征婚网站?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
网页设计与网站制作内容,怎样注册网站?
制作旅游网站html,怎样注册旅游网站?
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
如何在服务器上配置二级域名建站?
如何在宝塔面板创建新站点?
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
Laravel如何处理和验证JSON类型的数据库字段
专业商城网站制作公司有哪些,pi商城官网是哪个?
微信小程序 input输入框控件详解及实例(多种示例)
HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧
微信小程序 scroll-view组件实现列表页实例代码
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
高端企业智能建站程序:SEO优化与响应式模板定制开发
node.js报错:Cannot find module 'ejs'的解决办法
清除minerd进程的简单方法
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】
Python函数文档自动校验_规范解析【教程】
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
如何快速登录WAP自助建站平台?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
常州企业网站制作公司,全国继续教育网怎么登录?
IOS倒计时设置UIButton标题title的抖动问题
如何在万网自助建站平台快速创建网站?
Laravel API资源类怎么用_Laravel API Resource数据转换
如何用PHP快速搭建高效网站?分步指南
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
Laravel中的withCount方法怎么高效统计关联模型数量
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
黑客如何利用漏洞与弱口令入侵网站服务器?
企业网站制作这些问题要关注
iOS正则表达式验证手机号、邮箱、身份证号等
太平洋网站制作公司,网络用语太平洋是什么意思?
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
JavaScript实现Fly Bird小游戏
上一篇:QQ有linux版本的吗
上一篇:QQ有linux版本的吗


ge.key(i)