sessionStorage 就是会话存储,关标签页就清掉。
核心区别:
① localStorage——永久,除非手动删
② sessionStorage——关标签页就清
③ API 完全一样
坑:sessionStorage 不共享给新标签页、刷新页面数据还在、也是只能存字符串。
// 用法和 localStorage 一模一样,只是这柜子关标签页就没
// 往临时柜子里塞一张
sessionStorage.setItem("token", "abc123");
// 翻出来 → "abc123"
sessionStorage.getItem("token");
// 抽走这张
sessionStorage.removeItem("token");
// 整柜倒空
sessionStorage.clear();
// 现在柜里几张
sessionStorage.length;
会了 localStorage 就会 sessionStorage,把名字换一下就行。考试爱考"两者区别"。
// 做个实验(课件作业二③):
// 标签页 A:往自己柜子里写 sessionStorage.setItem('page','tab1')
// 标签页 B:想去读 sessionStorage.getItem('page')
// → 拿到 null!因为这柜子只属于 A 那个标签页,B 看不见
// 换成 localStorage 再试:
// 标签页 A:localStorage.setItem('page','tab1')
// 标签页 B:localStorage.getItem('page')
// → 拿到 'tab1'!同一个网站下所有标签页共用一个大柜子
// 再把标签页关了重新打开:
// sessionStorage 那张便签烧了;localStorage 的纸条还在
| 对比项 | sessionStorage | localStorage |
|---|---|---|
| 生命周期 | 关标签页/浏览器即销毁 | 永久,手动删除才消失 |
| 作用域 | 仅当前标签页 | 同域名所有页面共享 |
| 刷新页面 | 数据保留 | 数据保留 |
| 关标签页重开 | 数据销毁 | 数据还在 |
一句话记忆:sessionStorage 是"这个标签页专属的便签",localStorage 是"全家(同域名)共用的档案柜"。
// 1. 表单草稿:写到一半刷新不丢,关掉标签页自动清(最常用)
// 存表单草稿
sessionStorage.setItem("draft", textarea.value);
// 2. 当前这页临时选的筛选项
// 存本页临时筛选项
sessionStorage.setItem("filter", "on-sale");
// 3. 这次打开浏览器期间临时传个状态
// 临时传个来源标记
sessionStorage.setItem("from", "list-page");
// 别用它存需要长期记住的东西(登录态请交给 localStorage 或 Cookie)
| API | 作用 | 参数 | 返回值 | 代码示例 |
|---|---|---|---|---|
| sessionStorage.setItem(键, 值) | 存一条,标签页一关就没 | 键、值(字符串) | 无 | sessionStorage.setItem('tmp', 'abc'); // 关标签页就没 |
| sessionStorage.getItem(键) | 按键读 | 键 | 值 / null | let v = sessionStorage.getItem('tmp'); |
| sessionStorage.removeItem(键) | 删指定那条 | 键 | 无 | sessionStorage.removeItem('tmp'); |
| sessionStorage.clear() | 本标签页全清空 | 无 | 无 | sessionStorage.clear(); |
| sessionStorage.length | 存了几条 | 无 | 数字 | console.log(sessionStorage.length); |