javascript如何操作浏览器的本地存储?_localStorage和sessionStorage有何区别?【教程】
发布时间 - 2026-01-25 00:00:00 点击率:次localStorage需手动序列化/反序列化对象,用JSON.stringify()存、JSON.parse()取并捕获SyntaxError;sessionStorage仅当前标签页有效,关闭即销毁;二者均不参与HTTP请求,localStorage同源共享且持久,sessionStorage隔离且临时。
localStorage 和 sessionStorage 都能存字符串,但生命周期、作用域和用途完全不同——别用错,否则数据会莫名其妙消失或跨标签泄露。
怎么安全地存取 localStorage?
localStorage 只接受字符串,直接存对象会变成 [object Object];必须手动序列化和反序列化。
- 存:用
JSON.stringify()转对象为
字符串,再传给
localStorage.setItem() - 取:先用
localStorage.getItem()拿字符串,再用JSON.parse()还原(注意捕获SyntaxError) - 删单个:用
localStorage.removeItem();清空全部:用localStorage.clear()
localStorage.setItem('user', JSON.stringify({id: 123, name: 'Alice'}));
const user = JSON.parse(localStorage.getItem('user') || '{}');
sessionStorage 和 localStorage 的关键区别在哪?
两者 API 完全一致,但行为差异直接影响功能设计:
-
localStorage:数据永久保存(除非手动清除),同源下所有标签页、窗口共享 -
sessionStorage:仅当前标签页有效,关闭该标签页即销毁;即使同源,新开标签页也拿不到之前的数据 - 二者都不参与 HTTP 请求,不被服务端读取,也不随请求自动发送
比如表单草稿适合用 sessionStorage(关掉页面就丢,不污染长期存储);用户偏好设置更适合 localStorage。
为什么有时 getItems 返回 null 或解析失败?
常见原因不是 API 写错,而是环境或操作问题:
- 在无痕模式或某些浏览器隐私设置下,
localStorage可能被禁用,调用会抛SecurityError—— 必须加try/catch - 存入值超过浏览器限额(通常 5–10MB),
setItem()会静默失败或抛QuotaExceededError -
getItem()找不到键时返回null,不是空字符串,直接JSON.parse(null)会报错 - 不同协议(
httpvshttps)、子域名(a.example.comvsb.example.com)视为不同源,无法共享
localStorage 能监听变化吗?
可以,但只在「其他标签页」修改时触发本页的 storage 事件,当前页改自己不会触发。
- 监听用
window.addEventListener('storage', handler) - 回调里能拿到
event.key、event.oldValue、event.newValue、event.url - 注意:Safari 在无痕模式下不触发该事件;且事件不会告诉你哪个标签页改的,只通知“有变化”
这个机制适合做跨标签页状态同步(如登录态刷新),但别指望它替代状态管理库。
真正容易被忽略的是:localStorage 是阻塞式同步 API,大量读写会卡主线程;如果存的是大对象或频繁操作,得考虑防抖、分片或换用 IndexedDB。
# javascript
# java
# js
# json
# 浏览器
# session
# safari
# win
# 区别
# 作用域
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何将凡科建站内容保存为本地文件?
如何快速上传自定义模板至建站之星?
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
javascript中对象的定义、使用以及对象和原型链操作小结
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
高端建站如何打造兼具美学与转化的品牌官网?
香港服务器租用每月最低只需15元?
如何在搬瓦工VPS快速搭建网站?
如何快速上传建站程序避免常见错误?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
图册素材网站设计制作软件,图册的导出方式有几种?
实例解析angularjs的filter过滤器
Python高阶函数应用_函数作为参数说明【指导】
微信小程序 input输入框控件详解及实例(多种示例)
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
如何在景安服务器上快速搭建个人网站?
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
Laravel如何使用Livewire构建动态组件?(入门代码)
Laravel如何处理CORS跨域请求?(配置示例)
如何在宝塔面板中创建新站点?
详解MySQL数据库的安装与密码配置
如何在阿里云ECS服务器部署织梦CMS网站?
LinuxCD持续部署教程_自动发布与回滚机制
如何快速登录WAP自助建站平台?
Python制作简易注册登录系统
HTML 中如何正确使用模板变量为元素的 name 属性赋值
如何做网站制作流程,*游戏网站怎么搭建?
如何续费美橙建站之星域名及服务?
如何在阿里云购买域名并搭建网站?
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
详解Android图表 MPAndroidChart折线图
香港服务器网站卡顿?如何解决网络延迟与负载问题?
Android自定义listview布局实现上拉加载下拉刷新功能
高性价比服务器租赁——企业级配置与24小时运维服务
node.js报错:Cannot find module 'ejs'的解决办法
微信小程序 require机制详解及实例代码
iOS UIView常见属性方法小结
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
php485函数参数是什么意思_php485各参数详细说明【介绍】
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
浅谈Javascript中的Label语句
Swift开发中switch语句值绑定模式
个人摄影网站制作流程,摄影爱好者都去什么网站?
文字头像制作网站推荐软件,醒图能自动配文字吗?
如何快速搭建高效WAP手机网站吸引移动用户?
PHP 500报错的快速解决方法


