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如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
如何在Windows 2008云服务器安全搭建网站?
UC浏览器如何设置启动页 UC浏览器启动页设置方法
Laravel如何使用Collections进行数据处理?(实用方法示例)
Laravel如何使用Blade组件和插槽?(Component代码示例)
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
如何在阿里云通过域名搭建网站?
如何用VPS主机快速搭建个人网站?
网站制作企业,网站的banner和导航栏是指什么?
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
SQL查询语句优化的实用方法总结
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
潮流网站制作头像软件下载,适合母子的网名有哪些?
高防服务器租用如何选择配置与防御等级?
如何快速搭建二级域名独立网站?
如何为不同团队 ID 动态生成多个独立按钮
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
Laravel如何发送系统通知?(Notification渠道示例)
如何用腾讯建站主机快速创建免费网站?
LinuxShell函数封装方法_脚本复用设计思路【教程】
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
免费网站制作appp,免费制作app哪个平台好?
如何在IIS中新建站点并解决端口绑定冲突?
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
详解MySQL数据库的安装与密码配置
如何快速搭建高效服务器建站系统?
如何将凡科建站内容保存为本地文件?
Swift中switch语句区间和元组模式匹配
浅析上传头像示例及其注意事项
制作电商网页,电商供应链怎么做?
b2c电商网站制作流程,b2c水平综合的电商平台?
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
打造顶配客厅影院,这份100寸电视推荐名单请查收
如何在云主机快速搭建网站站点?
如何用PHP工具快速搭建高效网站?
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
如何在阿里云完成域名注册与建站?
如何在服务器上配置二级域名建站?
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
香港网站服务器数量如何影响SEO优化效果?
如何快速生成橙子建站落地页链接?
iOS正则表达式验证手机号、邮箱、身份证号等
桂林网站制作公司有哪些,桂林马拉松怎么报名?
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
Android利用动画实现背景逐渐变暗
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
上一篇:QQ有linux版本的吗
上一篇:QQ有linux版本的吗


ge.key(i)