sessionStorage是浏览器提供的、仅在当前标签页会话生命周期内有效的本地存储机制;关闭标签页即清空数据,刷新或恢复页面仍保留,且各同源标签页间完全隔离。
sessionStorage 是浏览器提供的、仅在当前标签页会话生命周期内有效的本地存储机制;它和 localStorage 最核心的区别不 
它本质是一个 Storage 对象,挂载在 window.sessionStorage 上,用法和 localStorage 几乎一样(setItem/getItem/removeItem),但数据完全隔离:
sessionStorage,读不到你上一个 tab 存的东西Cookie 那样自动发给服务器sessionStorage.setItem('cartItems', JSON.stringify([{id: 1, qty: 2}]));
const cart = JSON.parse(sessionStorage.getItem('cartItems') || '[]');
// 页面刷新后仍可读取,但关掉这个 tab 后再打开,getItem 就返回 null
两者 API 完全一致、都只能存字符串、容量都约 5–10MB,真正要盯住的只有三点:
sessionStorage 绑定「页面会话」(tab 级),localStorage 绑定「域名+协议+端口」,跨 tab 共享且永久存在(除非手动 clear() 或用户清缓存)sessionStorage 互不可见;而 localStorage 任意一个 tab 修改,其他同源 tab 可通过监听 storage 事件感知sessionStorage 并以为“关 tab 就安全了”——其实只要页面没关,XSS 攻击仍能直接读取;真要防窃取,应配合 HttpOnly Cookie + 内存变量它不是“小号 localStorage”,而是为特定交互模式设计的:
sessionStorage.setItem('debugMode', 'true')),避免影响其他窗口的正常测试localStorage
开发者常因名字里有 “session” 就误以为它等价于服务端 session,但其实:
sessionStorage 和服务端 session 完全无关,既不传 sessionId,也不受服务端控制sessionStorage 是独立的localStorage 更可靠setItem 存对象必须手动 JSON.stringify,读取时必须 JSON.parse,否则得到的是 [object Object] 字符串真正要记住的只有一句:sessionStorage 是浏览器给每个 tab 发的“一次性便签本”,写完关本子就烧掉;localStorage 是钉在墙上的“白板”,擦了才没,不擦永远在。