前端本地存储技术笔记:localStorage 与 sessionStorage 详解

在前端开发中,本地存储是实现客户端数据持久化或临时缓存的核心技术之一,可避免频繁与服务器交互,提升用户体验。本文系统梳理两种常用本地存储方案 ------localStorage与sessionStorage的特性、用法及注意事项。

localStorage:持久化本地存储

核心特性
  • 存储位置:数据存储于用户浏览器的本地磁盘,而非内存,具备持久化特性。
  • 生命周期:数据默认永久保留,仅通过代码删除或用户手动清除浏览器缓存时才会失效(关闭浏览器、重启设备不影响数据)。
  • 存储格式:采用键值对(key-value)结构,且键和值均需为字符串类型(非字符串数据会被自动转换为字符串存储)。
  • 作用域:同一浏览器的同一域名下,所有页面共享localStorage数据;不同域名或不同浏览器间无法跨域访问。
基础操作(CRUD)
  • 存储 / 修改数据

    通过localStorage.setItem(key, value)方法实现,若key不存在则为"新增",若key已存在则为"覆盖修改"。
    语法示例:

    javascript 复制代码
    // 新增数据:key为'age',value为'18'
    localStorage.setItem('age', '18');
    // 修改数据:覆盖key为'age'的原有值,更新为'20'
    localStorage.setItem('age', '20');
  • 获取数据

    通过localStorage.getItem(key)方法获取指定key对应的value,若key不存在则返回null。
    语法示例:

    javascript 复制代码
    const age = localStorage.getItem('age');
    console.log(age); // 输出结果:'20'(字符串类型)
  • 删除指定数据

    通过localStorage.removeItem(key)方法删除指定key对应的键值对。
    语法示例:

    javascript 复制代码
    localStorage.removeItem('age');
    console.log(localStorage.getItem('age')); // 输出结果:null
  • 清空所有数据

    通过localStorage.clear()方法清空当前域名下所有数据。
    语法示例:

    javascript 复制代码
    localStorage.clear();

sessionStorage:临时会话存储

核心特性
  • 存储位置:数据存储于浏览器内存,属于临时缓存。
  • 生命周期:数据仅在当前浏览器窗口(或标签页)的会话周期内有效,简单来说就是关闭窗口之后就会消失
  • 存储格式:与localStorage一致,键和值均需为字符串类型。
  • 作用域:仅在当前浏览器窗口(或标签页)内有效。
基础操作

API与localStorage完全一致,仅生命周期和作用域不同。
语法示例:

javascript 复制代码
sessionStorage.setItem('token', 'abc123');
const token = sessionStorage.getItem('token');
sessionStorage.removeItem('token');
sessionStorage.clear();

关键注意事项:复杂数据类型的存储处理

问题场景

直接存储对象、数组等复杂数据类型会导致数据格式异常(如转换为"[object Object]")。
错误示例:

javascript 复制代码
const user = { uname: 'pink', age: 18 };
localStorage.setItem('user', user); // 存储异常
console.log(localStorage.getItem('user')); // 输出:"[object Object]"
解决方案:JSON序列化与反序列化(stringify和parse)
  • 存储复杂数据

    javascript 复制代码
    const userStr = JSON.stringify(user);
    localStorage.setItem('user', userStr);
  • 获取复杂数据

    javascript 复制代码
    const userStr = localStorage.getItem('user');
    const userObj = JSON.parse(userStr);
    console.log(userObj.uname); // 输出:'pink'

核心差异对比

对比 localStorage sessionStorage
生命周期 持久化(手动删除才失效) 会话级(窗口关闭自动失效)
存储位置 浏览器本地磁盘 浏览器内存
跨窗口共享 同一域名下共享 仅当前窗口有效
应用场景 用户偏好设置 临时表单数据、会话级Token

使用建议

长期数据用localStorage,临时数据用sessionStorage

复制代码
相关推荐
koo36414 小时前
pytorch深度学习笔记13
pytorch·笔记·深度学习
持续升级打怪中14 小时前
Vue3 中虚拟滚动与分页加载的实现原理与实践
前端·性能优化
GIS之路14 小时前
GDAL 实现矢量合并
前端
hxjhnct14 小时前
React useContext的缺陷
前端·react.js·前端框架
崎岖Qiu14 小时前
【OS笔记36】:文件存储空间管理(一)- 空闲区表法
笔记·操作系统·存储管理·文件系统·os
冰暮流星14 小时前
javascript逻辑运算符
开发语言·javascript·ecmascript
前端 贾公子15 小时前
从入门到实践:前端 Monorepo 工程化实战(4)
前端
菩提小狗15 小时前
Sqlmap双击运行脚本,双击直接打开。
前端·笔记·安全·web安全
前端工作日常15 小时前
我学习到的AG-UI的概念
前端
韩师傅15 小时前
前端开发消亡史:AI也无法掩盖没有设计创造力的真相
前端·人工智能·后端