javascript如何存储数据_localStorage和sessionStorage有何不同

发布时间 - 2026-01-01 00:00:00    点击率:
localStorage长期保存且同域标签页共享,sessionStorage仅限当前标签页、关闭即销毁;二者均只存字符串、容量约5–10MB、不参与HTTP请求。

localStoragesessionStorage 都是浏览器提供的客户端数据存储机制,用于在用户本地保存键值对(字符串),但它们的生命周期和作用域完全不同。

localStorage:长期保存,跨会话有效

数据一旦写入,就一直保留在浏览器中,除非被代码主动删除或用户手动清除缓存。关闭标签页、重启浏览器甚至重启电脑都不会丢失。

  • 适用场景:用户偏好设置(如主题、语言)、登录态标记(配合后端 token 使用)、离线缓存数据
  • 写法示例:localStorage.setItem('theme', 'dark')
  • 读取示例:localStorage.getItem('theme')
  • 注意:只能存字符串;对象需先 JSON.stringify(),读取后要 JSON.parse()

sessionStorage:仅限当前标签页,关闭即销毁

数据只在当前浏览器标签页(或窗口)中有效,页面刷新保留,但关闭该标签页后数据自动清空。不同标签页之间互不共享。

  • 适用场景:表单草稿临时保存、多步骤流程中的中间状态、一次性验证码或跳转参数
  • 写法示例:sessionStorage.setItem('step', '2')
  • 读取示例:sessionStorage.getItem('step')
  • 注意:同样只支持字符串,对象需序列化/反序列化

关键区别一目了然

  • 有效期:localStorage 永久(直到清除);sessionStorage 仅当前会话(标签页)
  • 共享范围:两者都按协议+域名+端口隔离;localStorage 同域名所有标签页共享;sessionStorage 仅本标签页可用
  • 容量限制:通常都是 5–10MB 左右(因浏览器而异),远大于 Cookie 的 4KB
  • 是否随请求发送:都不参与 HTTP 请求,完全由 JS 控制,比 Cookie 更轻量、更隐私

用错的常见坑

  • 把敏感信息(如密码、完整 token)直接存在 localStorage —— XSS 攻击可直接读取,不安全
  • 期望 sessionStorage 在新标签页打开时还能访问(比如 window.open() 或链接 target="_blank")—— 实际上是全新会话,数据为空
  • 存对象不处理 JSON 转换,导致 getItem() 返回 "[object Object]" 这种无意义字符串
基本上就这些。选哪个,核心就看“数据要不要跨页面/跨重启保留”。


# javascript  # java  # js  # json  # cookie  # 浏览器  # 电脑  # 端口  # session  # 后端  # win  # 区别 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 北京专业网站制作设计师招聘,北京白云观官方网站?  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  Swift中switch语句区间和元组模式匹配  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  Laravel怎么实现验证码(Captcha)功能  如何用5美元大硬盘VPS安全高效搭建个人网站?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  如何在万网利用已有域名快速建站?  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  如何用已有域名快速搭建网站?  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  高防服务器如何保障网站安全无虞?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  如何快速完成中国万网建站详细流程?  微信小程序 HTTPS报错整理常见问题及解决方案  C++时间戳转换成日期时间的步骤和示例代码  深圳网站制作培训,深圳哪些招聘网站比较好?  Python制作简易注册登录系统  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  php结合redis实现高并发下的抢购、秒杀功能的实例  Android利用动画实现背景逐渐变暗  制作电商网页,电商供应链怎么做?  Laravel怎么上传文件_Laravel图片上传及存储配置  详解Android图表 MPAndroidChart折线图  微信小程序 闭包写法详细介绍  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  网站制作壁纸教程视频,电脑壁纸网站?  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  西安专业网站制作公司有哪些,陕西省建行官方网站?  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  北京的网站制作公司有哪些,哪个视频网站最好?  Linux系统运维自动化项目教程_Ansible批量管理实战  JavaScript Ajax实现异步通信  Laravel如何处理异常和错误?(Handler示例)  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  原生JS获取元素集合的子元素宽度实例  网站制作报价单模板图片,小松挖机官方网站报价?  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  如何在宝塔面板创建新站点?  javascript中的try catch异常捕获机制用法分析