Skip to content

sessionGet / sessionSet / sessionRemove

sessionGetsessionSetsessionRemove 三个方法用于操作浏览器的 sessionStorage 会话存储。sessionGet 读取值时会尝试 JSON.parse 反序列化,失败则返回原字符串;sessionSet 在写入前会使用 JSON.stringify 序列化;sessionRemove 直接删除指定键名。与 local 系列函数用法完全一致,区别仅在于使用 sessionStorage 而非 localStorage

语法

javascript
sessionGet(key)
sessionSet(key, value)
sessionRemove(key)

参数

  • key string
    • 存储在 sessionStorage 中的键名。
  • value any
    • sessionSet 要存储的值,可以是简单对象或简单类型。内部会通过 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 在同源所有标签页间共享。

注意事项

  1. sessionGet 的"尝试解析"行为意味着:若存入的原始字符串恰好是合法 JSON(如 "true"),取出的将是解析后的值(布尔值 true),而非字符串本身。
  2. sessionSet 依赖 JSON.stringify,无法存储 undefined、函数、循环引用对象等不可序列化的值。
  3. sessionStorage 的存储容量通常为 5MB(因浏览器而异)。
  4. sessionStorage 的读写是同步阻塞的,避免频繁读写大量数据。
  5. 在隐私模式或存储被禁用时,setItem 可能会抛出异常,调用方应做好异常处理。
  6. 重新加载页面时,sessionStorage 中的数据会保留;但通过链接打开的新标签页不会继承 sessionStorage

示例

基本用法

存取对象

删除数据

浏览器兼容性

sessionGetsessionSetsessionRemove 仅依赖 window.sessionStorage API,该 API 在所有现代浏览器(Chrome、Firefox、Safari、Edge)及 IE8+ 中均受支持,兼容性良好。

性能考虑

  • 时间复杂度: O(1) - 直接调用浏览器原生存储 API,无循环操作。
  • 同步阻塞: sessionStorage 的读写为同步操作,但单次调用耗时极低。
  • 存储空间: 一般为 5MB 左右,超出配额时 setItem 会抛出 QuotaExceededError

相关函数