sessionGet / sessionSet / sessionRemove
sessionGet、sessionSet、sessionRemove 三个方法用于操作浏览器的 sessionStorage 会话存储。sessionGet 读取值时会尝试 JSON.parse 反序列化,失败则返回原字符串;sessionSet 在写入前会使用 JSON.stringify 序列化;sessionRemove 直接删除指定键名。与 local 系列函数用法完全一致,区别仅在于使用 sessionStorage 而非 localStorage。
语法
javascript
sessionGet(key)
sessionSet(key, value)
sessionRemove(key)参数
keystring- 存储在
sessionStorage中的键名。
- 存储在
valueanysessionSet要存储的值,可以是简单对象或简单类型。内部会通过JSON.stringify序列化后存储。
返回值
sessionGet string|Object|null
返回 sessionStorage 中对应键名的值。若能通过 JSON.parse 转化为对象则返回对象,否则返回原字符串;键名不存在时返回 null。
sessionSet void
无返回值。
sessionRemove void
无返回值。
描述
sessionStorage 是浏览器提供的会话级存储机制,存储的数据仅在当前浏览器标签页会话内有效,关闭标签页或浏览器后数据会被清除。
sessionGet(key):先调用window.sessionStorage.getItem(key)取得原始字符串,再尝试JSON.parse反序列化。若解析失败,则返回原字符串;若键不存在,返回null。sessionSet(key, value):内部使用JSON.stringify(value)序列化后调用window.sessionStorage.setItem(key, ...)写入。sessionRemove(key):内部调用window.sessionStorage.removeItem(key),键名不存在时不报错。
与 localStorage 的主要区别:
- 生命周期:
sessionStorage在标签页关闭后即清除;localStorage持久保留。 - 作用域:
sessionStorage仅在当前标签页内有效,不同标签页之间不共享(即使同源);localStorage在同源所有标签页间共享。
注意事项
sessionGet的"尝试解析"行为意味着:若存入的原始字符串恰好是合法 JSON(如"true"),取出的将是解析后的值(布尔值true),而非字符串本身。sessionSet依赖JSON.stringify,无法存储undefined、函数、循环引用对象等不可序列化的值。sessionStorage的存储容量通常为 5MB(因浏览器而异)。sessionStorage的读写是同步阻塞的,避免频繁读写大量数据。- 在隐私模式或存储被禁用时,
setItem可能会抛出异常,调用方应做好异常处理。 - 重新加载页面时,
sessionStorage中的数据会保留;但通过链接打开的新标签页不会继承sessionStorage。
示例
基本用法
存取对象
删除数据
浏览器兼容性
sessionGet、sessionSet、sessionRemove 仅依赖 window.sessionStorage API,该 API 在所有现代浏览器(Chrome、Firefox、Safari、Edge)及 IE8+ 中均受支持,兼容性良好。
性能考虑
- 时间复杂度: O(1) - 直接调用浏览器原生存储 API,无循环操作。
- 同步阻塞:
sessionStorage的读写为同步操作,但单次调用耗时极低。 - 存储空间: 一般为 5MB 左右,超出配额时
setItem会抛出QuotaExceededError。
相关函数
localGet / localSet / localRemove- 操作localStorage,持久化本地存储