如何存储数据_javascript的本地存储方式有哪些?

JavaScript本地存储有三种:localStorage持久化保存小量字符串数据,sessionStorage仅限当前标签页临时存储,IndexedDB支持大量结构化数据的异步数据库操作。

JavaScript 的本地存储方式主要有三种:localStorage、sessionStorage 和 IndexedDB。它们都运行在浏览器环境中,不依赖服务器,但适用场景和能力差异明显。

localStorage:持久化保存小量文本数据

数据长期保存,关闭浏览器甚至重启电脑后依然存在,除非手动清除或代码删除。容量一般为 5–10 MB(因浏览器而异),只支持字符串类型。

  • 存数据用 setItem(key, value),value 必须是字符串,对象需先 JSON.stringify()
  • 取数据用 getItem(key),记得用 JSON.parse() 还原对象
  • 清空全部用 clear(),删单个用 removeItem(key)

sessionStorage:仅限当前会话的临时存储

数据只在同一个浏览器标签页(tab)内有效,关闭该 tab 就自动清空。其他 API 和 localStorage 完全一致,适合存表单草稿、临时筛选状态等。

  • 刷新页面不会丢失,但新开 tab 或复制链接打开就拿不到原数据
  • 不能跨 tab 共享,也不参与浏览器多进程隔离问题

IndexedDB:浏览器内置的低级数据库

适合存大量结构化数据,比如离线文章、用户上传的图片(转为 Blob 或 ArrayBuffer)、聊天记录等。支持索引、事务、增删改查,但 API 较复杂,需异步操作。

  • 不是键值对,而是“数据库 → 对象仓库 → 记录”三级结构
  • 可存储字符串、数组、日期、Blob、File 等原生类型,无需序列化
  • 建议搭配封装库如 idb(轻量 Promise 化包装)来简化使用

基本上就这些。选哪个取决于你要存什么、存多久、有多大——简单开关状态用 localStorage,临时页内数据用 sessionStorage,要离线功能或大数据量就上 IndexedDB。